2017-07-31 53 views
0

我正在使用php symfony框架。我想從用戶表中獲取所有行。這就是爲什麼我寫了Symfony findAll()返回錯誤類型的結果集

$repository = $this->getDoctrine()->getRepository(User::class); 
$users = $repository->findAll(); 

但它的數組返回一個奇怪的數組類型。

Array ( 
      [0] => AppBundle\Entity\User Object ([id:AppBundle\Entity\User:private] => 1 [roll:AppBundle\Entity\User:private] => 1 [name:AppBundle\Entity\User:private] => kumar [password:AppBundle\Entity\User:private] => 123456) 
      [1] => AppBundle\Entity\User Object ([id:AppBundle\Entity\User:private] => 2 [roll:AppBundle\Entity\User:private] => 2 [name:AppBundle\Entity\User:private] => arpan [password:AppBundle\Entity\User:private] => 1234) 
      [2] => AppBundle\Entity\User Object ([id:AppBundle\Entity\User:private] => 3 [roll:AppBundle\Entity\User:private] => 3 [name:AppBundle\Entity\User:private] => Bumba [password:AppBundle\Entity\User:private] => abcd) 
     ) 

現在,如果我嘗試返回新的響應(json_encode($用戶)),則返回[{},{},{}]。幫我。

+2

你應該閱讀有關的學說,它是面向對象的方式一起工作數據庫。在所有情況下,它將返回模型的對象,而不是值。 –

回答

4

它返回的是一組對象。一般來說,這是您想要的自動綁定/保溼所有您創建的實體,因此您現在可以撥打$result->getFoo()

但是,你似乎想JSON結果,你應該叫->getArrayResult()而不是->findAll()

像這樣:

$query = $this->getDoctrine() 
     ->getRepository('User entity namespace') // probably AppBundle/Entity/User 
     ->createQueryBuilder('u') 
     ->getQuery(); 
$result = $query->getArrayResult(); 

高度建議您閱讀文檔從上到下約10倍尤其是Symfony的&學說部分https://symfony.com/doc/current/doctrine.html

+0

如果我使用getArrayesult代替的findAll然後它給BadMethodCallException HTTP 500內部服務器錯誤 未定義的方法「getArrayResult」。方法名稱必須以findBy或findOneBy開頭! – Hunter

+0

請參閱上面的編輯。 – Doug

+0

感謝它的工作.. – Hunter