我試圖建立一個innerJoin
查詢使用Doctrine2/QueryBuilder
。Symfony2/Doctrine2 innerJoin使用QueryBuilder
$repo = $this->getDoctrine()
->getRepository('MyBundle:Models');
$query = $repo->createQueryBuilder('m')
->where('m.id = :id')
->setParameter('id', $id);
主義說:
聯接永遠屬於FROM子句中的一個組成部分。這就是爲什麼 必須將連接所屬的FROM部分的別名指定爲 的第一個參數。
作爲第二個和第三個參數,您可以指定連接表的名稱和別名 ,第四個參數包含ON子句。
Ex。
$queryBuilder
->innerJoin('u', 'phonenumbers', 'p', 'u.id = p.user_id');
我無法理解的是,'phonenumbers'
表被引用到Entity Name
或DB Table Name
。
什麼其實我想要的是,有沒有什麼辦法明確提及實體像
innerJoin('u', 'MyBundle:phonenumbers', 'p', 'u.id = p.user_id')
?
加入時就有點混亂。可以請某人向我解釋?
幫助!!
你會怎麼寫DQL爲 '選擇m.id,m.name,c.name FROM車型爲M INNER JOIN類別爲C \t ON(m.id = c.mdl_id) WHERE c.id =?'? – Mehulkumar
我更新了答案,因爲它不完全正確。從你的ModelRepository(奇怪的名字tbh)中運行它。 –
謝謝。我已經解決了它。我真正在尋找的是這樣的:**在沒有關聯的實體之間進行連接是不可能的,直到版本2.4,您可以使用以下語法生成任意連接:**'選擇您從用戶u JOIN黑名單b與u.email = b.email',這在queryBuilder中也是可行的。我有兩個沒有關聯的實體,事情讓我感到困惑的是,教義是如何確定哪個表加入的。我的錯。 – Mehulkumar