Rod*_*ing 5 php serialization doctrine symfony doctrine-orm
我的问题是我想返回从对象内部的 Doctrine 获得的一些数据JsonResponse。我用 a 获取数据QueryBuilder,如下所示:
$qb = $this->getDoctrine()->getRepository(User::class)->createQueryBuilder('u');
$data = $qb->getQuery()->getResult();
$JSONResponse = new JsonResponse();
$JSONResponse->setData($data);
Run Code Online (Sandbox Code Playgroud)
然而,里面的数据看起来是JsonResponse空的:
data: {
[],
[],
[],
[],
.....
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我如何才能以这种方式正确返回数据?
User我认为您正在使用 Doctrine 从数据库中正确获取 s 数组(您可以var_dump($data)在获取它们后使用简单的方法进行检查。
但是,当您将Users 数组放入 中时JsonResponse,这些对象将被序列化,并且由于(我猜)类中的属性User是private,因此每个对象的序列化只是一个空数组[]......
您需要传递一个普通的数据数组而JsonResponse不是一个 s 数组User,为此您有几个选项:
$qb->getQuery()->getArrayResult()直接获取普通数组而不是对象数组User。User类实现JsonSerializable接口,以便您定义对象应如何序列化。 User)使用一些专门的序列化库(如JMS Serializer)从对象生成普通数组(如果您愿意,也可以手动生成),然后将该数据放入JsonResponse.| 归档时间: |
|
| 查看次数: |
3693 次 |
| 最近记录: |