获取 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'));