我正在使用laravel 5.6,并且在我的上载表中有多个与vehicle_id相关的图像,像这样的外键,
uploads table
id fileName vehicle_id
1 1.jpg 1
2 2.jpg 1
3 3.jpg 1
4 4.jpg 1
5 28.png 2
6 28.png 2
7 29.png 2
8 30.png 3
9 31.png 3
10 56.png 3
车辆表与上传表有很多关系,
public function thumbnail() {
return $this->hasMany(Upload::class)->orderByDesc('id');
}
VehicleController是
public function index()
{
$vehicles = Vehicle::with('thumbnail')->get();
return view('vechicles.index')->withVehicles($vehicles);
}
和显示index.blade.php文件的数据是
@if($vehicles)
@foreach($vehicles as $vehicle)
{{$vehicle->district}}
{{$vehicle->town}}
{{$vehicle->brand}}
{{$vehicle->model}}
<hr>
<tr>
@foreach($vehicle->thumbnail as $aaa)
<img src="/images/{{ $aaa->resized_name }}">
@endforeach
</tr>
@endforeach
@endif
但是仍然在我的视图文件中,我可以显示多个与vehicle_id相关的图像(不仅仅显示一个与vehicle_id相关的图像),然后如何仅显示一个与每个vehicle_id相关的图像?
答案 0 :(得分:0)
通过Constraining Eager Loading
建立您的关系,并限制由此带来的结果。
替换行
$vehicles = Vehicle::with('thumbnail')->get();
通过以下
$vehicles = Vehicle::with([
'thumbnail' => function ($q) {
$q->limit(1);
}
])->get();
您也可以使用first
方法而不是使用限制,
另一种方法是使用有限的缩略图创建新的关系,在您的车辆模型中添加新的关系,例如
public function oneThumb () { // or whatever your method name
return $this->hasMany(Upload::class)->orderByDesc('id')->limit(1);
}
答案 1 :(得分:0)
您可以做三件事:
我希望有帮助。