Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony findAll()返回错误类型的结果集_Php_Symfony_Doctrine - Fatal编程技术网

Php Symfony findAll()返回错误类型的结果集

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

我使用的是php symfony框架。我想从用户表中获取所有行。这就是我写作的原因

$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开头!