Есть теги на сайте. Они реализованы через таблицу связи (post_id, tag_id).
Нужно достать все новости с максимально повторяющимеся тегами.
У меня есть вот такой код:
SELECT Post.id, Post.title
FROM news_post Post
INNER JOIN `news_post_tags` Post_Tags
ON Post.id = Post_Tags.post_id
WHERE Post_Tags.tag_id IN (1, 2, 3, 4, 5, 6, 7)
GROUP BY Post_Tags.post_id
ORDER BY COUNT( Post_Tags.tag_id ) DESC
он отлично работает и теперь его нужно написать с помощью доктрины.
Я начал писать:return $this->getEntityManager()
->createQuery("SELECT Post "
. "FROM IlichNewsBundle:Post Post "
. "INNER JOIN Post.tags Tags "
)
->setFirstResult(0)->setMaxResults(50)->getResult();
Доктрина генерирует что-то такое:
SELECT
n0_.id AS id0,
n0_.slug AS slug1,
...
FROM
news_post n0_
INNER JOIN news_post_tags n2_ ON n0_.id = n2_.post_id
INNER JOIN Tag t1_ ON t1_.id = n2_.tag_id
LIMIT
50 OFFSET 0
Так вот мне нужно получить доступ к таблице
INNER JOIN news_post_tags n2_ ON n0_.id = n2_.post_id Тоесть сделать что то такое:return $this->getEntityManager()
->createQuery("SELECT Post "
. "FROM IlichNewsBundle:Post Post "
. "INNER JOIN Post.tags Tags "
GROUP BY n0_.post_id
ORDER BY COUNT( n0_.tag_id ) DESC;
)
->setFirstResult(0)->setMaxResults(50)->getResult();
как можно задать алиас вот этот таблице news_post_tags ?