OrderBY在控制器上的模型关系eloquant?

时间:2017-08-17 11:48:39

标签: php laravel laravel-5 laravel-eloquent

我无法找到任何完美的解决方案。

控制器:

 $servicerequest = ServiceRequest::selectRaw('count(id) as totalservice,max(created_date) as last_service,service_provider_id,id,service_id,account_id,service_request,created_date')->with(['account' => function($first) use ($keyword) {
                        $first->select('id', 'restaurant_name')->orderBy('restaurant_name', 'DESC');
                    }])
                ->with(['serviceProvider' => function($query) use ($keyword) {
                        $query->select('id', 'company_name');
                    }])->groupBy('account_id')
                ->orderBy('company_name', 'DESC')
                ->paginate(100);

我需要一个关于模型关系表字段的命令以及对主表数据的影响。因为它和一对一的关系所以不需要在内部订购。

就像我需要整个关系数据的顺序。

收集:

enter image description here

1 个答案:

答案 0 :(得分:0)

您必须将关联表连接到已使用的orderBy关系表。

您可以尝试使用此代码。

$servicerequest = ServiceRequest::selectRaw('count(id) as totalservice, max(created_date) as last_service,service_provider_id,id,service_id,account_id,service_request,created_date, SERVICEPROVIDERTABLE.company_name')
                                        ->join('serviceProvider', 'SERVICEPROVIDERTABLE.id', '=', 'SERVICEREQUESTTABLE.service_provider_id')
                                        ->with([
                                            'account' => function ($first) use ($keyword) {
                                                $first->select('id', 'restaurant_name')
                                                      ->orderBy('restaurant_name', 'DESC');
                                            }
                                        ])
                                        //->with([
                                        //    'serviceProvider' => function ($query) use ($keyword) {
                                        //        $query->select('id', 'company_name');
                                        //    }
                                        //])
                                        ->groupBy('account_id')
                                        ->orderBy('SERVICEPROVIDERTABLE.company_name', 'DESC')
                                        ->paginate(100);

我希望这有效。