Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Подскажите, как просто и эффективно вывести посты из многоуровневых категорий, т.е.
Есть корневая категория - новости
Есть дочернии категории - видео, фото, и т.д.
У дочерних могут быть еще вложенные категории
Посты принадлежат одной из категорий.
Чтобы вывести посты категории использую код:
$posts = Category::where('url', '=', $url)->published()->firstOrFail()->posts;
Вопрос в том, что если мы попадаем на родительскую категорию, то у нас не появятся все посты из дочерних ресурсов
Не в сети
Для двух уровней сделал так:
$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 в один массив?
Не в сети
Страницы 1