Я пытаюсь получить набор результатов из красноречивого запроса laravel, в результате чего я сопоставляю столбец со списком значений в массиве.
$authenticated_operation_ids = AccessControl::where('user_id', '=', $user_id)
->where('entity_type_id', '=', $operation_entity_id)
->pluck('entity_access_id')->toArray();
$authenticated_operations = Operation::whereIn('id', $authenticated_operation_ids);
return view('page.index')->withOperations($authenticated_operations);
Вы можете попробовать это как:
$authenticated_operation_ids = AccessControl::where('user_id', '=', $user_id)->where('entity_type_id', '=', $operation_entity_id)->pluck('entity_access_id')->toArray();
$authenticated_operations = Operation::whereIn('id', $authenticated_operation_ids)->get();
return view('page.index')->withOperations($authenticated_operations);
добавлять get()
в конце запроса.
1) pluck
возвращает одно значение из одной строки. Ты хочешь lists
чтобы получить один столбец из нескольких строк. toArray
может не понадобиться, так как возвращает массив значений
$authenticated_operation_ids = AccessControl::where('user_id', '=', $user_id)
->where('entity_type_id', '=', $operation_entity_id)
->lists('entity_access_id');
2) Вы забываете фактически получить строки во второй строке:
$authenticated_operations = Operation::whereIn('id', $authenticated_operation_ids)
->get();
Вы должны вызвать функцию get () для набора результатов, чтобы получить результаты. Модифицированный код будет похож
$authenticated_operation_ids = AccessControl::where('user_id', '=', $user_id)->where('entity_type_id', '=', $operation_entity_id)->get()->pluck('entity_access_id');
$authenticated_operations = Operation::whereIn('id', $authenticated_operation_ids)->get();
return view('page.index')->withOperations($authenticated_operations);
или вы можете использовать курсор для его обработки.