Как сделать так, чтобы разбиение на страницы в laravel 5.2 работало (считалось) только для записей основной таблицы, не включая таблицы объединения - PullRequest
0 голосов
/ 27 июня 2018
$employees  =   DB::table('users')
                    ->leftJoin('assigned_branches','assigned_branches.user_id','=','users.id')
                    ->leftJoin('assigned_geo_infos','assigned_geo_infos.id' ,'=','assigned_branches.region_branch_id')
                    ->leftJoin('user_customers','user_customers.user_id','=','assigned_branches.user_id')
                    ->leftJoin('customers','customers.id','=','user_customers.customer_id')
                    ->whereIn('assigned_geo_infos.project_id',$assigned_projects_ids)
                    ->where([['users.office_staff',0],['users.active',$filter]])
                    ->select('assigned_geo_infos.*','assigned_geo_infos.id as info_id','assigned_geo_infos.name as info_name','assigned_branches.*','assigned_branches.level as region_branch_level','users.*','customers.customer_name')
                    ->paginate(15);

Так что здесь я хочу, чтобы процесс разбивки на страницы или вычисления только по таблице пользователей, а не по другим таблицам, означал таблицу присоединений. По словам пользователей, общее количество должно быть 2, но из-за объединения это дает общую страницу 8. Или есть какое-то другое решение в который я могу получить все записи таблицы соединений в качестве подмассива массива записей основной таблицы.

1 Ответ

0 голосов
/ 27 июня 2018

Используйте метод groupBy (), чтобы сгруппировать результаты:

$employees  =   DB::table('users')
                    ->leftJoin('assigned_branches','assigned_branches.user_id','=','users.id')
                    ->leftJoin('assigned_geo_infos','assigned_geo_infos.id' ,'=','assigned_branches.region_branch_id')
                    ->leftJoin('user_customers','user_customers.user_id','=','assigned_branches.user_id')
                    ->leftJoin('customers','customers.id','=','user_customers.customer_id')
                    ->whereIn('assigned_geo_infos.project_id',$assigned_projects_ids)
                    ->where([['users.office_staff',0],['users.active',$filter]])
                    ->select('assigned_geo_infos.*','assigned_geo_infos.id as info_id','assigned_geo_infos.name as info_name','assigned_branches.*','assigned_branches.level as region_branch_level','users.*','customers.customer_name')
                    ->groupBy('users.id')
                    ->paginate(15);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...