从 JsonResponse 对象内的 Doctrine 返回数据

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)

有谁知道我如何才能以这种方式正确返回数据?

Mik*_*ikO 5

User我认为您正在使用 Doctrine 从数据库中正确获取 s 数组(您可以var_dump($data)在获取它们后使用简单的方法进行检查。

但是,当您将Users 数组放入 中时JsonResponse,这些对象将被序列化,并且由于(我猜)类中的属性Userprivate,因此每个对象的序列化只是一个空数组[]......

您需要传递一个普通的数据数组而JsonResponse不是一个 s 数组User,为此您有几个选项:

  1. 用于$qb->getQuery()->getArrayResult()直接获取普通数组而不是对象数组User
  2. User类实现JsonSerializable接口,以便您定义对象应如何序列化。
  3. 推荐User)使用一些专门的序列化库(如JMS Serializer)从对象生成普通数组(如果您愿意,也可以手动生成),然后将该数据放入JsonResponse.