例如,我有关系User→Posts,我想使用Symfony Serialize Component在Post中获取用户的id:
/**
* @var User
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="posts")
* @Groups({"public"})
*/
private $user;
如何获取具有用户ID的Post实体的JSON?
{
...
"user_id": 123,
...
}
但也可以序列化用户。
答案 0 :(得分:2)
根据文档,您可以使用处理序列化深度来避免CircularReferenceException
实体关系。
(https://symfony.com/doc/current/components/serializer.html#handling-serialization-depth)
<?php
namespace Acme;
class MyObj
{
public $foo;
/**
* @var self
*/
public $child;
}
$level1 = new MyObj();
$level1->foo = 'level1';
$level2 = new MyObj();
$level2->foo = 'level2';
$level1->child = $level2;
$level3 = new MyObj();
$level3->foo = 'level3';
$level2->child = $level3;
产生
$result = $serializer->normalize($level1, null, array('enable_max_depth' => true));
/*
$result = array(
'foo' => 'level1',
'child' => array(
'foo' => 'level2',
'child' => array(
'child' => null,
),
),
);
*/
答案 1 :(得分:0)
所以这样的事情会起作用:
/**
* @return int|null
* @Groups({"public"})
*/
public function getUserId(): ?int
{
return $this->getUser()->getId();
}