获取 laravel 中的外键数据
Get Foreign key data in laravel
我有两个 table 的房间和 room_images。在 room_images table 中,我们有一个房间的多张图片。现在我想在房间编辑 blade 模板中显示这些图像。
rooms table: | room_image table:
id (PK) | id
title | room_id (FK)
desc | room_image
房间编辑控制器
`public function edit($id)
{
$room = Room::find($id);
if(auth()->user()->id !== $room->user_id){
return redirect('/rooms')->withStatus(__('Unauthorized Page'));
}
return view('rooms.edit')->with('room' , $room);
}`
房间模式:Room.php
`public function user()
{
return $this->belongsTo('App\User');
}
public function tbl_roomimages()
{
return $this->hasMany('App\RoomImage');
}`
房间图像模态:RoomImage.php
`public function tbl_rooms()
{
return $this->belongsTo('App\Room','room_id');
}`
数据库列图片如下:
Room images tbl
Room tbl
以下应 return 模型中关系的实例。
$roomImages = $room->tbl_roomimages()->get();
您将能够像
一样从tbl_roomimages访问列数据
foreach($roomImages as $roomImage)
{
$roomImage->room_image;
}
好的,我有几样东西要给你。看我怎么做。
首先,你的模型问题:
您有以 "tbL_" 开头的关系函数命名,在 Laravel 中它将影响他们寻找的外键。相反,您需要使用 snake case。因此,例如,您的 Room-RoomImages 关系需要是这样的:
public function room_images()
{
return $this->hasMany('App\RoomImage');
}`
[快速说明:这实际上可能只是一个标准的命名约定。无论哪种方式都是很好的做法,但我在外键连接上可能是错误的。请随时给我打电话。]
然后,控制器
那么,为了效率,我推荐"eager-loading"你的房间图片。因此,在控制器中,更改为:
$room = Room::with("room_images")->find($id);
然后,最后,在你看来
假设 "room_image" 实际上是一个 "src" 值,这样做:
@foreach($room->room_images as $img)
<img src="{{ $img->room_image }}" />
@endforeach
并且,假设这确实只是 src 路径,我真的建议更改字段名称以反映这一点以避免混淆。
现在,一些提示:
一个:"Modal" -> "Model."(模态框是弹出窗口 window。)
二:如果你使用 compact(),当你有很多变量要传递给视图时,你可以节省很多冗余。
return view('rooms.edit')->with(compact('room', 'room_images', 'otherthing'));
我有两个 table 的房间和 room_images。在 room_images table 中,我们有一个房间的多张图片。现在我想在房间编辑 blade 模板中显示这些图像。
rooms table: | room_image table:
id (PK) | id
title | room_id (FK)
desc | room_image
房间编辑控制器
`public function edit($id)
{
$room = Room::find($id);
if(auth()->user()->id !== $room->user_id){
return redirect('/rooms')->withStatus(__('Unauthorized Page'));
}
return view('rooms.edit')->with('room' , $room);
}`
房间模式:Room.php
`public function user()
{
return $this->belongsTo('App\User');
}
public function tbl_roomimages()
{
return $this->hasMany('App\RoomImage');
}`
房间图像模态:RoomImage.php
`public function tbl_rooms()
{
return $this->belongsTo('App\Room','room_id');
}`
数据库列图片如下: Room images tbl
Room tbl
以下应 return 模型中关系的实例。
$roomImages = $room->tbl_roomimages()->get();
您将能够像
一样从tbl_roomimages访问列数据foreach($roomImages as $roomImage)
{
$roomImage->room_image;
}
好的,我有几样东西要给你。看我怎么做。
首先,你的模型问题:
您有以 "tbL_" 开头的关系函数命名,在 Laravel 中它将影响他们寻找的外键。相反,您需要使用 snake case。因此,例如,您的 Room-RoomImages 关系需要是这样的:
public function room_images()
{
return $this->hasMany('App\RoomImage');
}`
[快速说明:这实际上可能只是一个标准的命名约定。无论哪种方式都是很好的做法,但我在外键连接上可能是错误的。请随时给我打电话。]
然后,控制器
那么,为了效率,我推荐"eager-loading"你的房间图片。因此,在控制器中,更改为:
$room = Room::with("room_images")->find($id);
然后,最后,在你看来
假设 "room_image" 实际上是一个 "src" 值,这样做:
@foreach($room->room_images as $img)
<img src="{{ $img->room_image }}" />
@endforeach
并且,假设这确实只是 src 路径,我真的建议更改字段名称以反映这一点以避免混淆。
现在,一些提示:
一个:"Modal" -> "Model."(模态框是弹出窗口 window。)
二:如果你使用 compact(),当你有很多变量要传递给视图时,你可以节省很多冗余。
return view('rooms.edit')->with(compact('room', 'room_images', 'otherthing'));