Laravel对排序相关模型?

时间:2015-10-30 12:56:08

标签: php laravel laravel-5 laravel-5.1

我从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加载连接表?

2 个答案:

答案 0 :(得分:0)

我找到了解决方案:

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

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

答案 1 :(得分:0)

您可以通过预先加载来执行以下操作:

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