Laravel,按最新创建的子关系排序模型

Posted

技术标签:

【中文标题】Laravel,按最新创建的子关系排序模型【英文标题】:Laravel, sort model by latest created child relation 【发布时间】:2021-10-02 09:42:50 【问题描述】:

我有两个模型 - Ticket 和 Answer,Answer 是ticket 模型的子(属于)。目标是按日期按最新答案对工单进行排序,因此最后带有最近答案的工单应显示在前端列表的顶部。

如何实现?

【问题讨论】:

我想这就是你要找的***.com/questions/25700529/… 使用join和order by。 【参考方案1】:

有两种解决方案:

第一个

使用子查询连接。 Laravel 文档中有非常相似的案例,因此您可以复制 - 粘贴 - 编辑它。 https://laravel.com/docs/8.x/queries#subquery-joins

第二次

您可以更新 Ticket 时间戳并再次按其排序,类似于文档:https://laravel.com/docs/8.x/eloquent-relationships#touching-parent-timestamps

【讨论】:

更新父时间戳对于我的任务来说是非常准确的解决方案,谢谢! 第一种情况更防弹,因为它完全符合您的要求。第二种情况在大数据集上的性能要低得多,但更容易出错。例如,如果您有过去的记录,它将不适用于过去的记录,并且使用原始查询编辑/插入某些内容不会更新时间戳

以上是关于Laravel,按最新创建的子关系排序模型的主要内容,如果未能解决你的问题,请参考以下文章

laravel 雄辩的按关系排序

Laravel按hasmany关系排序

在laravel中首先按关系排序

Laravel Eloquent 按关系计数排序

如何在laravel中检索有限数量的相关模型并按相关模型对集合进行排序?

Laravel Eloquent按关系表列排序