我有两个实体:生产者和协议。生产者有许多协议。
问题
选择按上次协议创建日期排序的所有生产商。
解决方案
为了得到这个,我试着:
$producers = Producer::join('protocol', 'protocol.producer_id', '=', 'producer.id')
->orderBy('protocol.created_at', 'desc');
但并没有像预期的那样工作,主要是因为我甚至限制了最后一个协议。我怎样才能用拉维雄辩的口才做到这一点?
最佳答案
使用groupBy()
:
$producers = Producer::select('producer.*')
->join('protocol', 'protocol.producer_id', '=', 'producer.id')
->groupBy('producer.id')
->orderByRaw('max(protocol.created_at) desc');
关于php - Laravel-如何在hasMany中按相关属性排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52394072/