Как вывести посты из подкатегорий данной категории?

Создаю есть обычная таблица категорий, для которых можно назначить родительскую категорию в стобце parent_id Все посты я добавляю в категорию нижнего уровня (то есть каждый пост имеет только одну категорию). При переходе на страницу данной категории (указанной к посту) я получаю список постов:
$posts = $category->posts();        
            return view('category.show')->with(compact('category', 'posts'));

В App\Models\Category метод posts() выглядит так:
public function posts()
    {
        return $this->hasManyThrough(Post::class, self::class,  'parent_id', 'category_id');
    }

При использовании данного отношения, у меня на странице родительской категории выводятся все посты из дочерних категорий, но на странице любой дочерней категории, посты уже не выводятся, кроме того count()будет возвращать ноль. Если же в методе posts() parent_idзаменить на id, то в родительской категории выводиться ничего не будет, а в подкатегориях - будет. Можно ли как-то добавить в данное отношение еще и связь для корректног овывода постов на дочерних категориях?

Рассматривал eloquent-has-many-deep, но мне кажется он делает примерно то же самое.
  • Вопрос задан
  • 332 просмотра
Пригласить эксперта
Ответы на вопрос 1
@assets
Back-end developer
Вы сам себя запутали.

Вам просто нужно Categroy id передать дальше на post category_id. В шаблоне вывести категорию и подкатегорию через связь.

Не нужно в одном запросе передвать все посты, если пользователь не нажал на эту категорию.

https://lukasmarkevicius.com/blog/how-to-create-ca...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы