繁体   English   中英

由于多对多关系,Symfony Serializer 循环引用

[英]Symfony Serializer circular reference due to many-to-many relationship

我需要一个重新运行 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 文档中的循环引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM