2016-02-10 180 views
0

我有以下的庫:意想不到的結果

$qb = $this->getEntityManager()->createQueryBuilder(); 
$qb 
    ->select('r') 
    ->from('MyBundle:Rating', 'r') 
    ->groupBy('r.year'); 

$result = $qb->getQuery()->execute(); 
return $result; 

控制器做一個轉儲:

array(2) { 
    [0]=> 
    object(My\Entity\Rating)#553 (5) { 
    ["id":protected]=> 
    int(2) 
    ["index":protected]=> 
    int(1) 
    ["year":protected]=> 
    int(2010) 
    ["percentage":protected]=> 
    float(2.5) 
    } 
    [1]=> 
    object(My\Entity\Rating)#550 (5) { 
    ["id":protected]=> 
    int(1) 
    ["index":protected]=> 
    int(1) 
    ["year":protected]=> 
    int(2016) 
    ["percentage":protected]=> 
    float(0) 
    } 
} 
  1. 我期待隨着年齡的增長爲指標的數組,與值是與年份相匹配的對象數組,如果不是這樣的話?
  2. db中有大約10條記錄。一些如何只有這2出現。只輸入兩個不同年份的記錄,這可能是隻有兩個記錄的原因。有人知道爲什麼嗎?

我該如何達到1的預期?

回答

0

默認情況下,原則給出對象。如果你想獲得與所得到的數據的陣列可以使用

$result = $qb->getQuery()->execute(null, Query::HYDRATE_ARRAY); 

您需要包括學說\ ORM \查詢這個,或者你只是使用

$result = $qb->getQuery()->getArrayResult(); 

的原因,你只能得到有關數據那兩年是

->groupBy('r.year'); 

它消除了重複的條目。沒有它,你會得到他們。

+0

感謝您的關注,但它並沒有讓我接近。通過刪除groupBy,本練習的目標將被省略。另外,爲了更加正確,默認情況下,Doctrine用對象給出了一個ArrayCollection。 – apfz