2016-12-14 39 views
0

嗨,專家:我有一個問題建立一個查詢,以提取已使用'referenceMany'引用的文檔的詳細信息。下面是代碼symfony mongodb odm reference許多

class FoodItem{ 

    /** 
    * @MongoDb\Id 
    */ 
    protected Id; 

    /** 
    * @MongoDb\field(type="string") 
    */ 
    protected name; 

    /** 
    * @MongoDb\field(type="float") 
    */ 
    protected calories; 

    /** 
    * @MongoDb\ReferenceMany(targetDocument="FoodItem", storeAs="id") 
    */ 
    protected $bestEatenWith = array(); 
} 

的想法是1 FoodItem可以bestEatenWith其他FoodItems的示例設置,因此「bestEatenWith」是「標識的屬於同一‘FoodItem’文件的陣列。

我使用的查詢如下 -

$qb = $dm->createQueryBuilder('AppBundle:FoodItem') 
     ->select("name", "bestEatenWith", "nutrition") 
     ->eagerCursor(true) 
     ->hydrate(false); 
    $query = $qb->getQuery(); 
    $result = $query->execute(); 

結果我得到的,然後用嫩枝模板顯示,我可以在嫩枝,在「名稱」和「營養」顯示,但我得到' bestEatenWith'作爲'數組的ID'

問題1:如何使用PHP解析$ result並訪問包含在'bestEatenWith'數組中的Id?

問題2:我可能不會在單個查詢中找到類似'bestEatenWith.name'的東西嗎?

回答

0

感謝穆罕默德您的回答,您已回答我的問題的一部分。然而,我已經找到了第二部分的答案,所以這是一個完整的答案。

這是我did-

回答1點

  1. 二手轉儲()作爲穆罕默德回答

答案2

  1. 使用吸functi 'getBestEatenWith'檢索數組
  2. 然後使用foreach並使用getName函數getName檢索bestEatenWith記錄的名稱
0

問題1

在控制器轉儲與dump功能結果:

dump($result); 

問題2

通常情況下,你可以得到的名字從存在於$result

bestEatenWith