Итак, я видел много вопросов о моей проблеме (наибольший n-на-группу), но кажется, что я просто не могу заставить его работать с queryBuilder! (например: сообщение )
Я использую Symfony 4.2.2
Сущность
------------- -------------
News Taxonomy
------------- -------------
id id
title name
category (ManyToOne Taxonomy) value
status (ManyToOne Taxonomy)
publication_date
Категория может принимать следующие значения: tech / sports / games .. и т. Д.
Статус может принимать следующие значения: черновик / запланированный / опубликованный.
Что я хочу
В моем репозитории новостей, использующем queryBuilder, я хотел бы вернуть последние опубликованные новости каждой категории .
Что я в итоге сделал
return $this->createQueryBuilder('a')
->select('n news', 'n.publicationDate pubDate')
->leftJoin('n.category', 'c')
->addSelect('c.value category')
->leftJoin('n.status', 's')
->addSelect('s.value status')
->andWhere('s.value = :st')
->setParameter('st', Taxonomy::WORKFLOW_PUBLISHED)
->orderBy('n.category, n.datePublication', 'DESC')
->getQuery()
->getResult();
Таксономия :: WORKFLOW_PUBLISHED - константа хранения класса: 'опубликовано'
Затем в сервисе я просто перебираю результаты, полученные предыдущим методом, и извлекаю последние новости по категориям.
Мне не нравится это временное решение, так что если кто-нибудь сможет мне помочь с queryBuilder, это будет здорово!
+ Дополнительная информация
Я пытался сгруппировать по категориям, но он не возвращал последние значения.
Если возможно, я тоже ищу хорошую производительность.