Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 09.09.2015 12:13:52

Выборка из категорий

Подскажите, как просто и эффективно вывести посты из многоуровневых категорий, т.е.
Есть корневая категория - новости
Есть дочернии категории - видео, фото, и т.д.
У дочерних могут быть еще вложенные категории
Посты принадлежат одной из категорий.
Чтобы вывести посты категории использую код:

$posts = Category::where('url', '=', $url)->published()->firstOrFail()->posts;

Вопрос в том, что если мы попадаем на родительскую категорию, то у нас не появятся все посты из дочерних ресурсов

Не в сети

#2 09.09.2015 13:00:45

Re: Выборка из категорий

Для двух уровней сделал так:

        $cat = Category::where('url', '=', $url)->published()->firstOrFail();
        $cats_list = array($cat->id);
        $cats = $cat->children->lists('id');
        $cats = $cats->toArray();
        $cats_list = array_merge($cats_list, $cats);
        $posts = \App\Post::whereIn('cat_id',$cats_list)->get();

Если есть способ лучше, напишите пожалуйста.
А как быть с третьим уровнем, неужели через foreach искать всех потомков второго уровня, потом опять соединять все id в один массив?

Не в сети

Подвал раздела