[英]how to query many to many table in doctrine matching/joining on id
我有兩個實體:文章和類別。 那有很多表:article_category。
我可以在MySQL中毫無問題地執行此查詢:
SELECT COUNT(*) cnt, c.id, c.name FROM article_category ac, category c WHERE ac.category_id = c.id GROUP BY c.id ORDER BY cnt DESC
但是我很難將其轉換為Doctrine2查詢。 下面返回一個不存在的類錯誤,參考article_category表。
[...]
createQuery("SELECT COUNT(*) cnt, c.id, c.name FROM article_category ac, category c WHERE ac.category_id = c.id GROUP BY c.id ORDER BY cnt DESC")
[...]
具體來說,我的問題是我不知道如何訪問“多對多”表中的“ category_id”。
編輯
這是使用內部聯接的相同查詢(如果可以簡化的話)。
SELECT COUNT(*) cnt, c.id, c.name FROM category c INNER JOIN article_category ac ON c.id = ac.category_id GROUP BY c.id ORDER BY cnt DESC
我能夠弄清楚。 我使用DQL創建查詢:
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select('COUNT(c) cnt, c.id, c.name')
->from('NatknowEditorBundle:Category', 'c')
->innerJoin('c.articles', 'ac')
->groupBy('c.id')
->orderBy('cnt', 'DESC');
return $qb->getQuery()->getResult();
我以為我必須指定需要在哪里進行JOIN(“ ... ON c.id = ac.category_id ...”)。 但是,由於多對多已經由數組集合(在我的情況下為“文章”)映射,我在“類別”實體中擁有,所以我猜“ ON”是隱式的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.