mysql - Laravel 按关系属性订购数据

标签 mysql laravel laravel-5

我有两个相关模型“Yards”和“Inspections”。一个院子可以进行多次检查。

我希望能够根据检查属性“reinspect_at”对 Yard 列表进行排序。我有一个模型方法,它根据检查日期返回院子里的最新检查。

我尝试了以下方法:

$yards = Yard::orderBy('quarantined', 'DESC')
        ->with(['latestInspection' => function($query){
            $query->orderBy('reinspect_at', 'asc');
        }])
        ->get();

但这并没有根据 reinspect_at 日期对船厂进行排序,它只是为每个船厂排序最新的检验。

我希望能够始终返回院子的最新检查,但需要能够根据每个院子的最新检查的 reinspect_at 日期重新排序院子列表。干杯

码列表显示的屏幕截图如下。如您所见,检查到期日期是我希望能够订购结果的方式。

enter image description here

** 更新 ** 看起来我想要的可以在前端模板中使用:

@foreach( $yards->sortBy('latestInspection.reinspect_at') as $yard )

不过,最好能从 Controller 执行此操作,这样我就可以有其他选项来进行排序。

最佳答案

看起来我可以执行以下操作:

$yards = Yard::orderBy('quarantined', 'DESC')
        ->orderBy('archived', 'ASC')
        ->orderBy('name', 'ASC')
        ->get();
$yards = $yards->sortByDesc('latestInspection.reinspect_at');

关于mysql - Laravel 按关系属性订购数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41004224/

相关文章:

mysql 获取特定结果的行号

javascript - 拉维尔 4 : Sidebar is not clickable

php - 为什么带有 request->only() 的 if 语句不起作用? (Laravel)

pdo - Eloquent 是否缓存准备好的语句?

c++ - 在不增加内存的情况下逐渐增加 cpu 使用率。想法?

mysql - 如何在字符串中匹配下划线 - MYSQL

c# - EmptyDataRow 中的 DropdownList 和 Footer 数据与 SQL 存储过程绑定(bind)

laravel - 代客显示错误 URL 下的文件

php - Laravel - 将用户权限 "Gate::Define"代码重构为更易于阅读的代码

rest - Laravel Restful API - 如何基于多个参数创建自定义查询