我的问题是我想要从JsonResponse
对象中的Doctrine返回一些数据。我使用QueryBuilder
获取数据,如下所示:
$qb = $this->getDoctrine()->getRepository(User::class)->createQueryBuilder('u');
$data = $qb->getQuery()->getResult();
$JSONResponse = new JsonResponse();
$JSONResponse->setData($data);
但是,JsonResponse
内的数据看起来是空的:
data: {
[],
[],
[],
[],
.....
}
有谁知道如何正确地以这种方式返回数据?
答案 0 :(得分:3)
我认为您正在使用Doctrine从数据库中正确获取User
数组(您可以在获取后使用简单的var_dump($data)
检查它。
但是,当你将User
数组放入JsonResponse
时,这些对象将被序列化,并且因为(我猜)User
类中的属性是{{ 1}},每个序列化只是一个空数组private
...
您需要将一个简单的数据数组传递给[]
而不是JsonResponse
的数组,您可以选择以下几个选项:
$qb->getQuery()->getArrayResult()
直接获取普通数组而不是User
个数组。User
类实现JsonSerializable
接口,以便定义对象的序列化方式。 User
对象生成普通数组,然后将数据放入User
。答案 1 :(得分:1)
Hy,在这种情况下,如果可以
,请使用getArrayResult而不是getResult