如何在使用Laravel的条件下获取所有记录



我在数组中有两个请求参数:

       {
"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"
    }
]
   }

但没有得到组。

您遇到了一些问题

  1. 当您试图将组分配为
  2. 时,您将替换resultArray
  3. 您正在编写Elseif条件,这表明只有两个条件中只有一个会满足

更改这两条线

$resultArray['users'] = $users; // here result array will have key users 
$resultArray['groups'] = $groups; // here result array will have key groups 

elseif ($groupsDetails)if($groupsDetails)

替换

在上述情况下,将数据推入数组。在您的情况下,它更换数组。

它应该起作用。

如下所示,

更改您的代码

在您的代码中,只有一个部分(ifelseif(工作

    $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回答很好

最新更新