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