Как передать массив в :: with () - Lumen / Laravel - PullRequest
1 голос
/ 03 февраля 2020

Итак, $permittedTables - это массив имен таблиц, к которым я хочу присоединиться coretable. Для этого я хочу использовать Model :: with (), например так:

$join = coretable::with($permittedTables)->get();

Однако я получаю эту ошибку при выполнении кода выше:

Argument 1 passed to Illuminate\Database\Eloquent\Builder::parseWithRelations() must be of the type array, object given, called in E:\aether-backend\vendor\illuminate\database\Eloquent\Builder.php on line 1043

Что сбивает с толку меня больше всего интересует тот факт, что это действительно массив, поэтому я не совсем понимаю, почему он на самом деле выдает ЭТУ ошибку xD

Тем не менее, кто-нибудь может сказать мне, возможен ли этот подход на самом деле? И если да, то как я могу это сделать?

РЕДАКТИРОВАТЬ: Вот как был создан массив:

$permittedTables = extensiontables_registry::findmany($ids)->pluck('extensiontable_name');

На всякий случай, это как-то связано с этим.

Ответы [ 2 ]

3 голосов
/ 03 февраля 2020

Функция pluck возвращает Collection / Enumerable, вам нужно вызвать функцию toArray, чтобы получить массив имен таблиц

$permittedTables = extensiontables_registry::findmany($ids)
                             ->pluck('extensiontable_name')
                             ->toArray();

2 голосов
/ 03 февраля 2020

$permittedTables = extensiontables_registry::findmany($ids)->pluck('extensiontable_name'); В приведенном выше фрагменте кода ->pluck() метод возвращает Object, поэтому он выдает следующую ошибку must be of the type array, object given

Попробуйте использовать это: $permittedTables = extensiontables_registry::findmany($ids)->pluck('extensiontable_name')->toArray() Это должно работать.

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