我有4個表,實體中的屬性都相應地映射。我試圖根據選定的標籤查詢文章。Symfony2映射4表內聯接查詢到Doctrine QueryBuilder
articles => id, title, author_id - NAMESPACE AppBundle/Enity/Article
tags => id, name - NAMESPACE AppBundle/Entity/Tag
article_tags => article_id, tag_id
authors=> id, name - NAMESPACE AppBundle/Entity/Author
我已經找到了如何獲得由標籤有ID的相關人士他們在article_tags表和過濾通過作者ID以及所有文章。在SQL中,我的查詢看起來像這樣。經過測試和工作。
SELECT
articles.title, articles.id, authors.name
FROM
article_tags
INNER JOIN tags
ON article_tags.tag_id = tags.id
INNER JOIN articles
ON article_tags.article_id = article.id
INNER JOIN authors
ON authors.id = articles.author_id
WHERE
tags.id IN (1,2)
我想構建一個代表上述sql的查詢。到目前爲止,我的理解是,學說會根據實體中的ORM斷言自動選取所需的關聯。不過,我不確定如何將其他實體帶入查詢。這是我迄今爲止所擁有的。
我在文章回購代碼:
$qb = $this->createQueryBuilder('ar')
->select('ar.title, ar.id, au.name')
->from('article_tags', 'at')
->innerJoin('tags', 't', 'WITH', 'at.tag_id = t.id')
->innerJoin('ar', 'WITH', 'at.article_id = ar.id')
->innerJoin('authors', 'au', 'WITH', 'au.id = ar.author_id')
->where('at.id IN (1,2)');
return $qb->getQuery()->getResult();
我已經嘗試了上面的代碼與兩個「與」關鍵字「ON」和。
我的錯誤是: [語義錯誤] 0行,列76 '附近的標籤T,帶at.tag_id':錯誤:類 '標籤' 沒有定義。