php – 在Symfony中检测到循环引用
发布时间:2020-12-13 16:05:12 所属栏目:PHP教程 来源:网络整理
导读:我遇到了与Symfony中的循环引用相关的问题,我怀疑它是 由序列化器引起但我还没有找到任何答案.这是我创建的实体,路线和控制器.在这方面的任何建议将不胜感激. user.php的 class User{ /** * @var int * * @ORMColumn(name="id",type="integer") * @ORMId *
我遇到了与Symfony中的循环引用相关的问题,我怀疑它是
由序列化器引起但我还没有找到任何答案.这是我创建的实体,路线和控制器.在这方面的任何建议将不胜感激. user.php的 class User { /** * @var int * * @ORMColumn(name="id",type="integer") * @ORMId * @ORMGeneratedValue(strategy="AUTO") */ private $id; /** * @ORMOneToMany(targetEntity="Dieta",mappedBy="user") */ private $dietas; public function __construct() { $this->dietas = new ArrayCollection(); } //... //... } Dieta.php class Dieta { /** * @var int * * @ORMColumn(name="id",type="integer") * @ORMId * @ORMGeneratedValue(strategy="AUTO") */ private $id; /** * @ORMManyToOne(targetEntity="User",inversedBy="dietas") * @ORMJoinColumn(name="users_id",referencedColumnName="id") */ private $user; public function __construct() { $this->user = new ArrayCollection(); } //... //... } 路线 /** * @Route("dietas/list/user/{id}",name="userDietas") */ DietaController.php的方法 public function userListAction($id) { $encoders = array(new XmlEncoder(),new JsonEncoder()); $normalizers = array(new ObjectNormalizer()); $serializer = new Serializer($normalizers,$encoders); $user = $this->getDoctrine() ->getRepository('AppBundle:User')->find($id); $dietaDatas = $user->getDietas(); if(!$dietaDatas) { throw $this->createNotFoundException( 'There is no data...' ); } $jsonContent = $serializer->serialize($dietaDatas,'json'); return new Response($jsonContent); } 解决方法
你需要调用$normalizer-> setCircularReferenceHandler()
请阅读以下官方文档: handling-circular-references (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |