Php 如何在Laravel 5.6中显示多个关系中的最后一条记录

Php 如何在Laravel 5.6中显示多个关系中的最后一条记录,php,laravel,laravel-5.6,Php,Laravel,Laravel 5.6,我的上传表中有多个与车辆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

我的上传表中有多个与车辆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
使用VehicleController中的eager loader,vehicle表与图像表和数据图具有多对多关系

$vehicles = Vehicle::with('uploads')->get();
        return view('vechicles.index')->withVehicles($vehicles);
现在,这些图像显示在vehicles/index.blade.php文件中

 @foreach($vehicle->uploads as $upload)

         <tr>
                        <td><a href="{{route('vechicles.show',$vehicle->id)}}"><img src="/images/{{ $upload->resized_name }}"></a></td>

                    </tr>

        @endforeach
更新车型

class Upload extends Model
{
    public function vehicle()
    {
        return $this->belongsTo(Vehicle::class);
    }
}
 class Vehicle {
    public function thumbnail() {
        return $this->hasOne(Upload::class)->orderByDesc('id');
    }
}

$vehicles = Vehicle::with('thumbnail')->get();
当前刀片文件

 @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
@if($vehicles)
@foreach($车辆作为$车辆)
{{$vehicle->district}
{{$vehicle->town}
{{$vehicle->brand}
{{$vehicle->model}

@foreach($vehicle->缩略图为$aaa) 调整大小的\u name}}“> @endforeach @endforeach @恩迪夫
@Jonas Staudenmeier解决方案是最干净的。但是,如果您出于任何原因无法更新模型,您可以在任何刀片模板中使用此解决方案

app/Http/Controllers/vehicleController.php


参考资料/views/vehicule/index.blade.php


文件
@forelse($车辆作为$车辆)
@如果($Vehicle->uploads->count()>0)
@否则
此车辆未附加任何图像。
@恩迪夫
@空的
没有车辆可供展示。
@endforelse
在这里,我们使用larvel Collection
->first()
方法来获取第一个方法,但不要忘记(在本例中就是这样做的)在获取第一个元素时检查是否有任何上载(或一般的关系)

获取模型的关系时,所有关系都可用,直到您使用finisher(
first
all
,…)。

请尝试关系中的方法以获取最新模型

class Vehicle {
    public function thumbnail() {
        return $this->hasOne(Upload::class)->latest();
    }
}

请发布上载关系。请查看我更新的用户模型。试图获取非对象的属性时发生此错误(视图:C:\Users\Banda\Desktop\acxian\resources\views\vechicles\index.blade.php)检查上载表中的字段是否与本例中我编写的属性匹配:
fileName
resized\u name
。在公共函数缩略图()中缩略图是什么意思?它是模型吗?请根据我的知识检查您上载的内容它应该是模型吗?
缩略图
方法将返回最后插入的
上载
模型
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <table>
        <tbody>
            @forelse( $vehicules as $vehicule )
                <td>
                    @if( $vehicule->uploads->count() > 0 )
                        <a href="{{ route('vehicules.show', $vehicule->id) }}">
                            @php
                                $upload = $vehicule->uploads->sortByDesc('id')->first();
                            @endphp
                            <img src="{{ $upload->resized_name }}" alt="{{ $upload->fileName }}" />
                        </a>    
                    @else
                        This vehicule does not have any images attached.
                    @endif
                </td>
            @empty
                <td>No vehicules to display.</td>
            @endforelse
        </tbody>
    </table>
</body>
</html>
class Vehicle {
    public function thumbnail() {
        return $this->hasOne(Upload::class)->latest();
    }
}