Laravel关于排序相关模型


Laravel on sorting related model?

我从laravel文档中知道,我可以进行热切的加载,比如:

$records = (new Route)->with('country')->get();

但是当我执行这个:

    $records = (new Route)->query()->with('country')->orderBy('country.name', 'asc')->paginate();

我得到这个错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'country.name' in 'order clause' (SQL: select * from `routes` order by `country`.`name` asc limit 2 offset 0)

如何对相关模型进行排序?如何强制laravel加载联接的表?

我找到了解决方案:

$records = (new Route)->query()->join('countries', 'routes.country_id', '=', 'countries.id');

但这并不理想,因为加盟都是手工完成的。

您可以在热切加载的情况下执行以下操作:

$records = (new Route)->with(['country' => function ($q) {
                     $q->orderBy('name', 'asc');
                  }])->get(); // or paginate or whatever