我有两个实体:生产者和协议。生产者有许多协议。
问题
选择按上次协议创建日期排序的所有生产商。
解决方案
为了得到这个,我试着:

$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/

10-11 01:48