Как получить данные в Laravel 5.4 без использования array_push - PullRequest
0 голосов
/ 30 мая 2018

есть способ оптимизировать этот код.Я уже Google, но я не знаю, какое именно ключевое слово для поиска, поэтому я всегда не мог найти ответ.

В этом коде я получаю список утверждающих ID 512 (запросчик)

 $approver_list = DB::table('users')
        ->leftjoin('approver_group_list', 'approver_group_list.user_id', '=', 'users.id')
        ->leftjoin('approval_roles', 'approval_roles.as_id', '=', 'approver_group_list.as_id')
        ->leftjoin('approver_requestor_list', 'approver_requestor_list.at_id', '=', 'approval_roles.at_id')
        ->where('approver_requestor_list.user_id', 512)
        ->get();

Затем я использую array_push для извлечения данных Approver_list, затем я использую значение $ result для получения значения в таблице LeaveMain.

$result = array();
    foreach($approver_list as $al)
    {
        array_push($result , $al->user_id);
    }
    $leave_list = LeaveMain::whereIn('requestor_id', $result)->get();

Моя проблема в том, что всегда нужно использовать array_push для извлечения данных, или у laravel есть способ оптимизировать этот код.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018
 $approver_list = DB::table('users')
        ->leftjoin('approver_group_list', 'approver_group_list.user_id', '=', 'users.id')
        ->leftjoin('approval_roles', 'approval_roles.as_id', '=', 'approver_group_list.as_id')
        ->leftjoin('approver_requestor_list', 'approver_requestor_list.at_id', '=', 'approval_roles.at_id')
        ->where('approver_requestor_list.user_id', 512)
        ->pluck('id');


$leave_list = LeaveMain::whereIn('requestor_id', $approver_list)->get();

По сути, вы можете извлечь идентификатор из самой таблицы, вместо того, чтобы извлекать все данные, а затем взять идентификатор позже, и whereIn принимает коллекцию в качестве второго аргумента.поэтому нет необходимости приводить к массиву

Метод whereIn фильтрует коллекцию по заданному ключу / значению, содержащемуся в данном массиве: Ссылка

0 голосов
/ 30 мая 2018

Вам не нужно зацикливать значения Approver_list, вы можете использовать метод pluck, чтобы получить все значения для user_id.

$result = $approver_list->pluck('user_id')->toArray();
$leave_list = LeaveMain::whereIn('requestor_id', $result)->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...