Я столкнулся с проблемой, связанной с циклической ссылкой в Symfony, которую я подозреваю
вызвано сериализатором, но я еще не нашел никаких ответов. Вот сущности, которые я создал, маршрут и контроллер. Любые предложения в этом отношении будут высоко оценены.
User.php
class User
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="Dieta", mappedBy="user")
*/
private $dietas;
public function __construct()
{
$this->dietas = new ArrayCollection();
}
//...
//...
}
Dieta.php
class Dieta
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="dietas")
* @ORM\JoinColumn(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()
пожалуйста, прочитайте официальную документацию ниже:
Других решений пока нет …