我需要一个重新运行 json 数据的 api,所以我尝试通过 symfony 中的控制器发送 json 数据,并且我正在使用序列化器,但我在将组分配给具有多对多关系的属性时遇到问题(类别和用户)。 控制器代码:
$serializer = $this->container->get('serializer');
$JSONprojects = $serializer->serialize($DATA, 'json', ['groups' => ['project','category']]);
return new Response($JSONprojects);
return $JSONprojects ;
project.php(实体)。
class Project
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @Groups("project")
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
* @Groups("project")
*/
private $name;
/**
*
* @ORM\ManyToMany(targetEntity=User::class, mappedBy="projects")
*/
private $users;
/**
* @Groups("project")
* @ORM\ManyToOne(targetEntity=User::class, inversedBy="myproject")
* @ORM\JoinColumn(nullable=false)
*/
private $creator;
/**
*
* @ORM\ManyToOne(targetEntity=Category::class, inversedBy="projects")
*/
private $category;
Category.php(实体)
class Category
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*
*/
private $id;
/**
*
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
*
* @ORM\Column(type="text")
*/
private $image;
/**
*
* @ORM\OneToMany(targetEntity=Project::class, mappedBy="category")
*/
private $projects;
您可以使用序列化器处理循环引用,如下所示:
$JSONprojects = $serializer->serialize(
$data,
'json',
[
'circular_reference_handler' => function ($object) {return $object;},
'groups' => ['project','category'],
]
);
当循环引用被命中时,它将返回该对象一次。
有关循环引用的更多信息,请参见 Symfony 文档。