Laravel: объект класса Illuminate \ Database \ Eloquent \ Builder не может быть преобразован в строку - PullRequest
2 голосов
/ 21 июня 2019

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

Итак, сначала у меня есть $ расписаний :

$ расписаний = [{"id": 19}, {"id": 18}, {"id": 15}]

И цикл foreach выглядит следующим образом:

$queues= [];
foreach ($schedules as $schedule) {
     $queues[] = Queue::withTrashed()
                     ->latest()
                     ->where('schedule_id', $schedule);
}
return $queues;

когда я возвращаю очереди, он показывает:

Объект класса Illuminate \ Database \ Eloquent \ Builder не может быть преобразованв строку

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Отображаемая ошибка связана с тем, что вы не выполняете запрос, для этого требуется ->get() в конце Queue::...->where(...)->get().

если вы этого не сделаете, как сказал Дхананджай Кьяда в своем ответе:

попытается вернуть объект запроса

Но чтобы вернуть ответ:

The Response content must be a string or object implementing __toString()

Далее нам нужно заняться еще одной вещью.

Если вы определяете переменную $schedules и присваиваете ей значение, как показано в вопросе:

$ schedules = [{"id": 19}, {"id": 18}, {"id": 15}]

попробуйте сделать это, взяв JSON в качестве строки и преобразовав его в переменную PHP с помощью json_decode :

$schedules = json_decode('[{"id":19},{"id":18},{"id":15}]');

Тогда вы можете использовать значения id в вас, где:

->where('schedule_id', $schedule->id)->get()
1 голос
/ 21 июня 2019

Возможно, потому что вы не получаете результат по вашему запросу.Поскольку это просто запрос, он вернет объект запроса.Вам нужно добавить ->get(), чтобы получить результат.Вы можете попробовать следующий код:

$queues = [];
foreach ($schedules as $schedule) {
     $queues[] = Queue::withTrashed()
                 ->latest()
                 ->where('schedule_id', $schedule)->get()->toArray();
}
return $queues;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...