如何在不使用 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
它有一种优化此代码的方法。我已经 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