2016-12-06 84 views
0

假設我有兩個文檔如何訪問MongoDB ODM中相互引用的文檔的字段?

用戶和購買。所有購買都有對用戶的引用,並且用戶具有字段性別。

我想選擇男性客戶購買的產品。所以我有性別,我想重複思考購買和定義他們的「性別」。

類似的東西

public function findByGender() 
{ 
$query = 
     $this->createQueryBuilder() 
     ->field(""Purchase->User->gender"")->equals('male') 
     ->getQuery() 
     ; 

}

但當然 「之間的代碼」 ... 「」 不工作。我想知道是否有可能,如果是,我該怎麼做?

回答

1

您需要在2個查詢中分隔此查詢。首先選擇所有男性用戶並將這些用戶傳遞給第二個查詢。我建議您對查詢進行脫水並僅選擇基本要素。

$users = $this->createQueryBuilder() 
    ->hydrate(false) 
    ->select('_id') 
    ->field('gender')->equals('male') 
    ->getQuery()->execute()->toArray(); 

$products = $this->createQueryBuilder() 
    ->hydrate(false) 
    ->field('user.id')->in(array_keys($users)) 
    ->getQuery()->execute()->toArray(); 
相關問題