我有一个名为files的表,它保存了与属性表相关的图像的名称。
我试图使这些图像显示如下关系。
这是属性表的一部分。
这是表格文件及其与属性表的关系。
我可以在控制器的show方法(PropertyController)中传递什么参数?
目前我有以下内容:
public function show($id)
{
$properties = Property::find($id);
$files = File::all();
return View::make('properties.show', ['properties' => $properties, 'files' => $files]);
}
但它返回视图存储在files表中的所有图像。
@foreach($files as $file)
<div class="col-md-6 thumb">
<a class="thumbnail">
<img id="myImg" src="{{ URL::asset('uploads/products/' . $file->name) }}" alt="{{ $file->name }}" width="300" height="200">
</a>
</div>
@endforeach
哪种方法是正确的,以便可以通过属性表中的id显示与记录相关的图像?
答案 0 :(得分:2)
我假设您在hasMany()
和Property
模型之间使用File
关系。如果没有,请在Property
模型中创建关系:
public function files()
{
return $this->hasMany('App\File');
}
加载包含其所有图片的媒体资源
public function show($id)
{
$property = Property::with('files')->find($id);
return view('properties.show', compact('property'));
}
显示图像:
@foreach($property->files as $file)
// Here use the same code you used before.
@endforeach
或者,您可以单独加载数据:
public function show($id)
{
$property = Property::find($id);
$files = File::where('property_id', $property->id)->get();
return view('properties.show', compact('property', 'files'));
}
答案 1 :(得分:0)
在您的Property模型中,定义您的hasMany方法,如下所示:
public function files()
{
return $this->hasMany('App\File');
}
您控制器中的show方法如下:
public function show($id)
{
$property = Property::find($id);
$files = $property->files;
return View::make('properties.show', ['property' => $property, 'files' => $files]);
}