whereJsonContains не возвращая ничего - PullRequest
0 голосов
/ 10 января 2020

У меня есть следующие блоки кода

try {

            $data = Checklist::where('setupStatus', true)->whereJsonContains('workspaceRegions', $regionID)->orderBy('id', 'desc')->paginate(5);

            return response()->json([
                'data' => $data
            ], 200);
        } catch (\Throwable $th) {
            return $th;
        }

Это работает как положено и возвращает правильные контрольные списки.

Итак, я сделал то же самое в следующем блоке, но на этот раз я приходится перебирать и массив, чтобы получить значения идентификатора для поиска. Это всегда возвращает пустой массив, хотя

$company = Auth::user()->company;
        try {
            $hodIDs = CompanyRoles::where('hod', true)->get();

            $hods = [];
            foreach ($hodIDs as $option) {
                $id = strval($option->id);
                $hods = User::where('companyID', $company->id)->whereJsonContains('companyRoles', $id)->with('employee')->get();
            }

            return response()->json([
                'message' => 'success',
                'hods' => $hods
            ], 200);
        } catch (\Throwable $th) {
            return $th;
        }

Столбец 'companyRoles' является массивом, который содержит что-то вроде ["1", "2"]

Как я могу вернуть каждого пользователя с и hodID в массиве столбцов companyRoles?

Следующее дает мне то, что я хочу, но это похоже на хак.

$hods = [];
            foreach ($hodIDs as $option) {
                $id = strval($option->id);
                $user = User::where('companyID', $company->id)->whereJsonContains('companyRoles', $id)->with('employee')->first();

                if ($user) {
                    array_push($hods, $user);
                }
            }

Заранее благодарю

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