Nikolino
@Nikolino

Как лучше сделать выборку с JOIN?

Есть entity категорий и entity постов, отношение одна категория ко многим постам.

Нужно вывести категории с id и именем категории, и посчитать кол-во постов в каждой категории. Доступ к коллекции объектов постов мне не нужен, нужно только знать их количество. Так, чтобы запрос был оптимальным.
Возможно это делается намного проще и я зря полез ковырять QueryBuilder.

Вообще хотелось бы получить коллекцию Partial Objects, в объектах будет лишь три свойства (id, name, posts_count).
Но в доках сказано, что Partial Objects это плохая практика.
Можно голым запросом, но не хотелось бы.

Может еще какие-то варианты есть?
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Ma3ypok
Элементарно решается квери билдером:
$qb = $categoryRepository->createQueryBuilder('category')
    ->addSelect('category.id, category.name')
    ->leftJoin('category.posts', 'posts') 
    ->addSelect('COUNT(posts.id) AS posts_count')
    ->groupBy('category');
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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