我在数组中有两个请求参数:
{
"users": [1,2,3],
"groups": [1,2]
}
我想获取用户对ID 1,2,4的记录和针对ID 1,2的组记录,我可以获取用户的记录,但我无法获取组的记录。
这是我的代码:
public function isGroupUser(Request $request)
{
$usersDetail = $request->input('users', []);
$groupsDetails = $request->input('groups', []);
if($usersDetail)
{
$users = DB::table('users')
->join('user_basic_info','users.id','=','user_basic_info.user_id')
->select('users.id','user_basic_info.first_name')
->whereIn('users.id',$usersDetail)->get();
$resultArray = ['users' => $users];
return IlluminateSupportFacadesResponse::json($resultArray, 200);
}
elseif ($groupsDetails)
{
$groups = DB::table('group')
->select('group.id','group.name')
->whereIn('group.id',$groupsDetails)->get();
$resultArray = ['groups' => $groups];
return IlluminateSupportFacadesResponse::json($resultArray, 200);
}
}
我可以获取用户的记录,但无法获得组。我在哪里错了?
目前我的JSON响应:
{
"users": [
{
"id": 1,
"first_name": "Admin"
},
{
"id": 2,
"first_name": "Admin"
},
{
"id": 3,
"first_name": "Admin"
}
]
}
但没有得到组。
您遇到了一些问题
- 当您试图将组分配为 时,您将替换
- 您正在编写Elseif条件,这表明只有两个条件中只有一个会满足
resultArray
更改这两条线
$resultArray['users'] = $users; // here result array will have key users
$resultArray['groups'] = $groups; // here result array will have key groups
elseif ($groupsDetails)
用 if($groupsDetails)
在上述情况下,将数据推入数组。在您的情况下,它更换数组。
它应该起作用。
如下所示,
更改您的代码在您的代码中,只有一个部分(if
或elseif
(工作
$usersDetail = $request->input('users', []);
$groupsDetails = $request->input('groups', []);
$resultArray = []; // an empty array to store your results
if($usersDetail)
{
$users = DB::table('users')
->join('user_basic_info','users.id','=','user_basic_info.user_id')
->select('users.id','user_basic_info.first_name')
->whereIn('users.id',$usersDetail)->get();
$resultArray['users'] = $users;
}
if ($groupsDetails)
{
$groups = DB::table('group')
->select('group.id','group.name')
->whereIn('group.id',$groupsDetails)->get();
$resultArray['groups'] = $groups;
}
return IlluminateSupportFacadesResponse::json($resultArray, 200);
只需删除第一次返回即可。因为如果在请求中有用户,则何时返回,然后从ANAD返回第二次返回。
编辑:@shobi回答很好