Как получить все записи в условиях использования laravel - PullRequest
0 голосов
/ 17 мая 2019

У меня есть два параметра запроса в массиве:

       {
"users": [1,2,3],
"groups": [1,2]
      }

Я хочу получать записи о пользователях с идентификатором 1,2,4 и о группах с идентификатором 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"
    }
]
   }

Но не получить группы. Ваша помощь нужна здесь.

Ответы [ 3 ]

0 голосов
/ 17 мая 2019

измените свой код, как показано ниже,

в вашем коде работает только одна часть (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 \Illuminate\Support\Facades\Response::json($resultArray, 200);
0 голосов
/ 17 мая 2019

просто удалите первый возврат. потому что, если в запросе есть пользователь, то когда нужно вернуться, а затем выйти из, если anad не добраться до второго возврата.

отредактировано: @Shobi хорошо ответил

0 голосов
/ 17 мая 2019

У вас есть проблемы

  1. Вы заменяете resultArray, когда пытаетесь назначить ему группы,
  2. Вы пишете другое условие, которое предполагает, что только одно из двух условий всегда будет удовлетворять

Изменить эти две строки

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

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

elseif ($groupsDetails) заменить это на if($groupsDetails)

В вышеприведенном случае это отправка данных в массив. В вашем случае это заменяющий массив.

Это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...