Задать вопрос
root09
@root09

Laravel подсчет новостей в выбранной категории (включая подкатегории)?

Здравствуйте, ни как не могу понять, как через ORM реализовать получение количества объявлений в выбранной категории (включая подкатегории):
Есть категории и подкатегории, например:
Авто
-bwm
-audi
Мото
-irbis
-polaris
есть таблица posts с объявлениями
так же есть таблица posts_categories
вида:
post_id | categories_id
ну и таблица с категориями categories
id | name | parent

подскажите пожалуйста как через ORM реализовать получение количества объявлений в выбранной категории (включая подкатегории)? например получить количество объявлений в категории Авто (посчитать число объявлений из подкатегории bwm и audi)

У меня есть только идея сначала получить список всех подкатегорий например так:
$categories = Categories::where('parent', '=', $id)->get();

А затем через цикл посчитать количество новостей в каждой категории, но ведь это не совсем правильно?

т.е если это сделать просто на MYSQL запросах, то должно быть что то вида:

SELECT * FROM categories WHERE parent = '1'; // получаем список дочерних категорий (например получили id 2,3,4)
далее
считаем сколько постов у дочерних элементов, например:
SELECT COUNT(*) FROM post_categories WHERE categories_id = 2;
SELECT COUNT(*) FROM post_categories WHERE categories_id = 3;
SELECT COUNT(*) FROM post_categories WHERE categories_id = 4;

и нужно сложить результат этих 3 запросов
  • Вопрос задан
  • 1854 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@eskrano
Мне кажется что можно сделать Categories hasOne() к родительской категории и через жадную загрузку подсчитать как вариант. Или я не правильно понял суть вопроса
Ответ написан
Комментировать
Tesla
@Tesla
Похоже, вы просто не знаете, что в SQL кроме оператора '=' есть еще оператор 'IN'. Это чтобы 3 запроса в один объединить :)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы