首页 > 解决方案 > 按父模型订购 Eloquent 查询

问题描述

在 Laravel 中,我遇到了如下图中的情况。我想获取所有用户的订单,但按date事件对结果进行排序。

我试过了:

    $orders = auth()->user()->orders()->with(['tickets', 'event' => function($query) {
          $query->orderBy('date', 'desc');
    }])->get();

但顺序似乎完全是随机的,与事件的日期没有任何关系。

不过,感觉这一定是可能的?

在此处输入图像描述

标签: laraveleloquent

解决方案


Reinink 写了一篇关于这种查询的精彩文章

您的解决方案将按日期订购加载的事件,但您需要事件日期订购。所以这里是我的建议。

$orders = auth()->user()->orders()->orderByDesc(
    Event::select('date')->whereColumn('orders.event_id', 'events.id')
)->with(['tickets', 'event'])->get();

推荐阅读