2012-07-14 87 views
0

我在我的DQL查詢中遇到問題。我有一個表有3個外鍵userId,userRId和userAId。其中兩個外鍵可能是NULL。JOIN DQL(symfony2)兩個表之間的多個連接

我想加入查詢中的所有外鍵,但我不知道如何在同一個表之間連接兩個或三個外鍵。 (見查詢)有人可以給我一些想法?

**TABLE A** 
    id userId userRId userAId 
    1  2  NULL  NULL 
    1  2   1  NULL 
    1  2  NULL   1 

**TABLE USER** 
userId name 
    2  xxxx 
    1  xxxx 

The DQL query: 

"SELECT FROM nasyBundle:A a JOIN a.userId u , a JOIN userRId , a JOIN userAid 
     WHERE ... 

回答

3

在DQL中,您對對象(實體)而不是表(基於映射)進行操作。所以,當你擁有的實體是這樣的:

class User 
{ 
    private $id; 
    private $name; 
} 

class TableA 
{ 
    private $id; 
    private $user; 
    private $userR; 
    private $userA; 
} 

你可以這樣創建查詢(當你有有效的映射)

SELECT a 
FROM nastyBundle:TableA a 
INNER JOIN a.user u 
LEFT JOIN a.userR ur 
LEFT JOIN a.userA ua 

但是,是與你需要的映射信息工作。如果你沒有映射,你可以使用doctrine生成它:映射:導入只需鍵入你的symfony項目閱讀更多php app/console help doctrine:mapping:import

+0

謝謝!我沒有獲得結果,因爲我沒有使用LEFT JOINS,現在它工作正常。 – nasy 2012-07-16 12:55:59