#laravel #eloquent #laravel-7
#laravel #eloquent #laravel-7
Вопрос:
Я пытаюсь вернуть коллекцию eloquent в своей функции, поэтому я сделал это:
// model
// User.php
// user -> branch -> groups -> alerts
public function alerts()
{
$alerts = (new Alert)->newCollection(); // empty elequent collection
$groups = $this->branch()->first()->groups()->get(); // collection of group model
foreach ($groups as $group) {
// merge all groups alerts to an single eloquent collection
$alerts->merge($group->alerts()->get());
}
return $alerts;
}
тем не менее, я знаю, что в моей базе данных есть некоторые данные, и я их проверил. $alerts
в моем случае не должно быть пустым!
и если у меня dd($alerts)
есть только empty
набор eloquent collection.
// dd($alerts)
IlluminateDatabaseEloquentCollection {#1423 ▼
#items: []
}
также я знаю о push
concat
методах and, но concat
также не работает и push
не делает то, что я хочу.
Я знаю, что могу объединять таблицы, но не хочу использовать объединения.
как правильно объединить коллекции eloquent?
Спасибо.
Ответ №1:
foreach ($groups as $group) {
$alerts = $alerts->merge($group->alerts()->get());
}
Вы забыли назначить объединенную коллекцию.
Комментарии:
1. приятно, что он не заметил назначения! глупая ошибка, ха-ха.
2. происходит ошибка 😉
3. Я сделал ту же ошибку, и потребовался час, чтобы разобраться в этом! Уф!
4. Я смог найти этот вопрос только тогда, когда попытался задать тот же вопрос. Задавать вопросы — это хорошо !! 🙂