Студия разработки сайтов и приложений

Netspark.ru

Заметки и разработки

OctoberCMS

Собрать коллекцию дочерних моделей в Laravel

Допустим, у нас есть модель Post и у неё есть теги Tag, множественная связь. И мы загрузили несколько моделей постов с тегами, например вот так:

$posts = Post::with('tags')->all();

В $posts находится, конечно, коллекция. Теперь, если нам нужно собрать со всех постов теги в одну коллекцию, причем чтобы не было дублей, можно это сделать вот так:

$posts = Post::with('tags')->all();
$tags = $posts->reduce(function (Collection $collection, Post $post) {
    $collection = $collection->merge($post->tags);
}, collect());

Feel da power of Laravel collections!

Комментарии