【问题标题】:How to get all records in if conditions using laravel如何使用laravel在if条件下获取所有记录
【发布时间】:2019-10-04 18:45:42
【问题描述】:

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

       {
"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 \Illuminate\Support\Facades\Response::json($resultArray, 200);
    }

    elseif ($groupsDetails)
    {
        $groups = DB::table('group')
            ->select('group.id','group.name')
            ->whereIn('group.id',$groupsDetails)->get();
        $resultArray = ['groups' => $groups];

        return \Illuminate\Support\Facades\Response::json($resultArray, 200);
    }



}

我可以得到用户的记录,但不能得到组 我哪里错了? 非常感谢您的帮助!

目前我的 json 响应:

               {
"users": [
    {
        "id": 1,
        "first_name": "Admin"
    },
    {
        "id": 2,
        "first_name": "Admin"
    },
    {
        "id": 3,
        "first_name": "Admin"
    }
]
   }

但没有得到组。 您的帮助需要在这里。

【问题讨论】:

  • 因为你使用else if elseif ($groupsDetails),这意味着你的代码只有if部分执行

标签: php arrays laravel object


【解决方案1】:

只需删除第一次返回。因为如果请求中有用户,那么什么时候返回,然后如果没有到达第二次返回则退出。

已编辑:@Shobi 回答得很好

【讨论】:

    【解决方案2】:

    如下更改您的代码,

    在您的代码中只有一部分(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 \Illuminate\Support\Facades\Response::json($resultArray, 200);
    

    【讨论】:

      【解决方案3】:

      你遇到了一些问题

      1. 当您尝试为其分配组时,您正在替换 resultArray
      2. 您正在编写 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)

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

      它应该可以工作。

      【讨论】:

        猜你喜欢
        • 2018-10-27
        • 1970-01-01
        • 1970-01-01
        • 2020-01-31
        • 2021-01-24
        • 1970-01-01
        • 1970-01-01
        • 2019-06-13
        • 1970-01-01
        相关资源
        最近更新 更多