我有两个表room和room_images。在room_images表中,我们有一个房间的多个图像。现在,我想在房间编辑刀片模板中显示这些图像。
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
答案 0 :(得分:1)
以下内容应从您的模型返回该关系的实例。
$roomImages = $room->tbl_roomimages()->get();
您将能够从tbl_roomimages这样访问列数据
foreach($roomImages as $roomImage)
{
$roomImage->room_image;
}
答案 1 :(得分:1)
好吧,我有几件事情要给你。让我们看看我怎么做。
首先,您的模型存在的问题:
您具有用前导“ tbL_”命名的关系函数,该函数在Laravel中将影响他们要查找的外键。相反,您需要使用蛇形保护套。因此,例如,您的Room-RoomImages关系必须为:
public function room_images()
{
return $this->hasMany('App\RoomImage');
}`
[快速说明:这实际上可能只是一个标准的命名约定。无论哪种方式都是好的做法,但是在外键连接上我可能是错的。随时叫我出来。]
然后是控制器
然后,出于效率考虑,我建议“尽快加载”您的房间图像。因此,在控制器中,更改为:
$room = Room::with("room_images")->find($id);
然后,最后,在您看来
假设“ room_image”实际上是“ src”值,请执行以下操作:
@foreach($room->room_images as $img)
<img src="{{ $img->room_image }}" />
@endforeach
并且,假设这确实只是src路径,我真的建议您更改字段名称以反映该名称以避免混淆。
现在,有几点提示:
一个:“模态”->“模型”。 (模态是一个弹出窗口。)
二:如果您使用compact(),则在有大量变量要传递给视图的情况下,可以节省很多冗余。
return view('rooms.edit')->with(compact('room', 'room_images', 'otherthing'));