我在 symfony 中查询有困难
I have difficulty with a query in symfony
我有实体 tag [id, title] 和实体 annonce [id, title] .
关系中的标签和通知 ManyToMany,
所以我有关联 annonce_tag [annonce_id, tag_id ]
我只有存储库 tag 和存储库 annonce,我没有 annonce_tag 存储库
我想查询以获得最常用的 3 个标签的 TOP
谁有建议进行此查询
/---------已更新---------/
我已经在标签存储库中尝试过这个但没有用
return $query = $this->createQueryBuilder('t')
->select('t.id','count(a)')
->innerJoin('t.annonces', 'a')
->getQuery()->getResult();
您可以编写如下连接 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();
你可以像那样做 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 告诉学说在查询中使用字段而不是 return 它作为 getResult() 中的数组
你可以这样做:
SELECT tag.id, count(annonce.id) from App:Tag tag JOIN tag.annonces annonce GROUP BY tag.id ORDER BY count(annonce.id) desc
您将获得一个有序的标签列表,其中包含每个标签的链接数量
我有实体 tag [id, title] 和实体 annonce [id, title] .
关系中的标签和通知 ManyToMany,
所以我有关联 annonce_tag [annonce_id, tag_id ]
我只有存储库 tag 和存储库 annonce,我没有 annonce_tag 存储库
我想查询以获得最常用的 3 个标签的 TOP
谁有建议进行此查询
/---------已更新---------/
我已经在标签存储库中尝试过这个但没有用
return $query = $this->createQueryBuilder('t')
->select('t.id','count(a)')
->innerJoin('t.annonces', 'a')
->getQuery()->getResult();
您可以编写如下连接 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();
你可以像那样做 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 告诉学说在查询中使用字段而不是 return 它作为 getResult() 中的数组
你可以这样做:
SELECT tag.id, count(annonce.id) from App:Tag tag JOIN tag.annonces annonce GROUP BY tag.id ORDER BY count(annonce.id) desc
您将获得一个有序的标签列表,其中包含每个标签的链接数量