我有实体标记[id,title] 和实体 annonce [id,title] 。
与 ManyToMany 相关的标记和名词,
所以我很迷恋 annonce_tag [annonce_id,tag_id]
我只有存储库 tag 和存储库 annonce ,我没有annonce_tag存储库
我想查询以获取最常用的3个标签的顶部
谁有建议进行此查询
/ ---------更新---------- /
我已经在“代码存储库”中尝试过此方法,但无法正常工作
return $query = $this->createQueryBuilder('t')
->select('t.id','count(a)')
->innerJoin('t.annonces', 'a')
->getQuery()->getResult();
答案 0 :(得分:0)
您可以如下编写联接DQL查询,只需更改值和语义即可适合您的情况:
$query = $repository->createQueryBuilder('t')
->select('COUNT(a) AS HIDDEN annonceNumber', 't')
->innerJoin('t.annonce', 'a')
->groupBy('a')
->orderBy('annonceNumber', 'DESC')
->limit(3)
->getQuery()->getResult();
答案 1 :(得分:0)
您可以像这样进行DQL
// in annouce repository
$query = $repository->createQueryBuilder('a')
->select('COUNT(t) AS HIDDEN usedTags', 'a')
->innerJoin('a.tag', 't')
->groupBy('t')
->orderBy('usedTags', 'DESC')
->limit(3)
->getQuery()->getResult();
hidden告诉该学说在查询中使用字段,但不将其作为数组返回给getResult()
答案 2 :(得分:0)
您可以执行以下操作:
SELECT tag.id, count(annonce.id) from App:Tag tag JOIN tag.annonces annonce GROUP BY tag.id ORDER BY count(annonce.id) desc
您将获得标签的有序列表,以及每个标签的链接nononce数量