因此,我有一个多对多表,其中包含created_at以及外键student_id和status_id。
对于每个学生,我只想检索最新的status_id = 1的条目。
我这样试过:(这是一个查询链,在本例中,$query将是Student::where(something else))
$query->whereHas('statusuri', function($query) use ($statusuri) {
$query->latest('status_student.created_at')->where('status_id', 1);
});
(statusuri是多对多关系)
但我得到的结果与我所需要的不同。
它首先执行where子句,然后执行latest()。基本上,它检索匹配where的最后一个条目。
我想搜索每个学生,最新的条目,如果where子句匹配它,就得到那个条目。如果不匹配,就不返回任何东西。
Eloquent是否可以做到这一点?
- 谢谢-谢谢
1条答案
按热度按时间brccelvz1#
您是否考虑过“具有多个之一”的关系:https://laravel.com/docs/9.x/eloquent-relationships#advanced-has-one-of-many-relationships
您可以在Student模型中建立关系: