У меня есть следующие блоки кода
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);
}
}
Заранее благодарю