2017-03-20 62 views
1

我需要在數據庫中獲取的所有記錄的使用原則findAll()陣,我的查詢是這樣如何在findAll()中獲得數組結果 - Doctrine?

$result = $this->getDoctrine() 
       ->getRepository('CoreBundle:Categories') 
       ->findAll(\Doctrine\ORM\Query::HYDRATE_ARRAY); 

即使設置水化模式爲HYDRATE_ARRAY,我得到的結果作爲對象

array:4 [▼ 
0 => Categories {#323 ▶} 
1 => Categories {#326 ▶} 
2 => Categories {#329 ▶} 
3 => Categories {#332 ▶} 
] 

我犯了什麼錯誤?

回答

5

findAll()方法沒有任何參數。你可以,例如,使用存儲庫的createQueryBuilder()方法來實現你想要做什麼:

$query = $this->getDoctrine() 
    ->getRepository('CoreBundle:Categories') 
    ->createQueryBuilder('c') 
    ->getQuery(); 
$result = $query->getResult(Query::HYDRATE_ARRAY); 
+0

感謝的人,但我得到了createQueryBuilder(參數異常),之後我傳遞參數(「C」),我得到的結果。甚至$ query-> getArrayResult()也給出相同的結果 –

+0

對不起。事實上,我忘了將別名傳遞給'createQueryBuilder()'方法。我確定了我的答案。 – xabbuh

+1

你還必須添加''使用Doctrine \ ORM \ Query;'' –

0

其中返回DQL SELECT查詢的結果可以通過所謂的hydration mode 因此受到影響的格式你不能用它來findAll()。你可以試試下面這樣:

$em = $this->getDoctrine()->getManager(); 
$result = $em->createQuery('select m from CoreBundle:Categories m') 
     ->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);