Php Symfony findAll()返回错误类型的结果集
我使用的是php symfony框架。我想从用户表中获取所有行。这就是我写作的原因Php Symfony findAll()返回错误类型的结果集,php,symfony,doctrine,Php,Symfony,Doctrine,我使用的是php symfony框架。我想从用户表中获取所有行。这就是我写作的原因 $repository = $this->getDoctrine()->getRepository(User::class); $users = $repository->findAll(); 但它数组返回一种奇怪的数组类型 Array ( [0] => AppBundle\Entity\User Object ( [id:AppBundle\Entity\Us
$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($users))它将返回[{},{},{}]。帮帮我。它返回的是一个对象数组。通常,这是您想要的,因为它会自动绑定/水合您创建的所有实体,因此您现在可以调用
$result->getFoo()
但是,当您似乎想要json结果时,应该调用->getArrayResult()
,而不是->findAll()
像这样:
$query = $this->getDoctrine()
->getRepository('User entity namespace') // probably AppBundle/Entity/User
->createQueryBuilder('u')
->getQuery();
$result = $query->getArrayResult();
I高度建议您从上到下阅读文档大约10次,尤其是Symfony&Doctrine部分它返回的是一个对象数组。通常,这是您想要的,因为它会自动绑定/水合您创建的所有实体,因此您现在可以调用
$result->getFoo()
但是,当您似乎想要json结果时,应该调用->getArrayResult()
,而不是->findAll()
像这样:
$query = $this->getDoctrine()
->getRepository('User entity namespace') // probably AppBundle/Entity/User
->createQueryBuilder('u')
->getQuery();
$result = $query->getArrayResult();
I高度建议您自上而下阅读文档大约10次,尤其是Symfony&条令部分您应该阅读条令,这是一种面向对象的数据库工作方式。在所有情况下,它都将返回模型的对象,而不是值。您应该阅读有关条令的内容,这是一种面向对象的处理数据库的方法。在所有情况下,它都将返回模型的对象,而不是值。如果我使用getArrayResult而不是findAll,那么它将给出BadMethodCallException HTTP 500内部服务器错误未定义的方法“getArrayResult”。方法名称必须以findBy或findOneBy开头!如果我使用getArrayResult而不是findAll,那么它将给出BadMethodCallException HTTP 500内部服务器错误未定义方法“getArrayResult”。方法名称必须以findBy或findOneBy开头!