如何在不使用 array_push 的情况下获取 laravel 5.4 中的数据

How to fetch data in laravel 5.4 with out using array_push

它有一种优化此代码的方法。我已经 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中取值table.

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

我的问题是,总是需要使用array_push来提取数据,或者laravel有办法优化这段代码。

您不需要循环 approver_list 值,您可以使用 pluck 方法检索 user_id.

的所有值
$result = $approver_list->pluck('user_id')->toArray();
$leave_list = LeaveMain::whereIn('requestor_id', $result)->get();
 $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();

基本上你可以从 table 本身中提取 id,而不是先获取所有数据然后再获取 id,whereIn 接受集合作为第二个参数。所以不需要转换为数组

The whereIn method filters the collection by a given key / value contained within the given array: Link