我需要根据“关系”对“记录”数据进行排序。
我正在尝试查询以下内容。
$data = Lead::with('bdm', 'status_code', 'bdm.bdm')->get()->sortByDesc('bdm.bdm.name');
它工作正常,但我需要带有分页的数据,默认情况下,Laravel 5会提供该数据。
因此,如果我尝试使用以下查询。它给出了错误。
$data = Lead::with('bdm', 'status_code', 'bdm.bdm')->pagination(20)->sortByDesc('bdm.bdm.name');
我正在尝试另一种方式来执行相同的任务。它工作正常,但未对记录进行排序。
$data = Lead::with(['bdm','status_code', 'bdm.bdm' => function ($query) {
$query->orderBy('name', 'desc');
}])->paginate(20);
因此,任何人都可以给我解决方案,以调整该查询。
任何帮助将不胜感激。
谢谢
答案 0 :(得分:0)
您应该使用join
语句来做到这一点。
如果我假设您使用列名,那么它应该看起来像这样:
$data = Lead::with(['status_code', 'bdm.bdm'])
->join('bdms', 'bdms.id', '=', 'leads.bdm_id')
->orderBy('bdms.name', 'desc')
->paginate(20);
查询中的第一个bdm
参数是多余的。无论如何,它将在bdm.bdm
期间进行处理。