laravel-7 elequent слияние коллекций не работает

#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. Я смог найти этот вопрос только тогда, когда попытался задать тот же вопрос. Задавать вопросы — это хорошо !! 🙂