您好,我遇到了一个导致此错误的问题:
序列化以下对象时检测到循环引用 类“ App \ Entity \ User”(配置限制:1)
我有一个企业实体,其中包含任务订单,车辆和用户。
与用户,公司和车辆有关系的订单实体。
还有一个与订单和公司有关系的用户实体。
所以我有这个: Entreprise.php
class Entreprise
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="App\Entity\User",mappedBy="entreprise",orphanRemoval=true)
*/
private $users;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Vehicule",orphanRemoval=true)
*/
private $vehicules;
/**
* @ORM\OneToMany(targetEntity="App\Entity\OrdreMission",orphanRemoval=true)
*/
private $ordreMissions;
OrdreMission.php:
class OrdreMission
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* Agent qui réalisera la mission
* @ORM\ManyToOne(targetEntity="App\Entity\User",inversedBy="ordreMissions")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* Immatriculation de la voiture de service
* @ORM\ManyToOne(targetEntity="App\Entity\Vehicule")
*/
private $vehicule;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Entreprise",inversedBy="ordreMissions")
* @ORM\JoinColumn(nullable=false)
*/
private $entreprise;
Vehicule.php:
class Vehicule
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* Marque du véhicule
* @ORM\Column(type="string",length=255)
*/
private $marque;
/**
* Modèle du véhicule
* @ORM\Column(type="string",length=255)
*/
private $modele;
/**
* Immatriculation du véhicule
* @ORM\Column(type="string",length=255)
* @MaxDepth(2)
*/
private $immatriculation;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Entreprise",inversedBy="vehicules")
* @ORM\JoinColumn(nullable=false)
* @MaxDepth(2)
*/
private $entreprise;
User.php:
class User implements UserInterface,Serializable
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* Adresse email de l'utilisateur
* @ORM\Column(type="string",length=180,unique=true)
* @Assert\NotBlank()
* @Assert\Email(message="Veuillez renseigner un email valide")
*/
private $email;
/**
* Rôles de l'utilisateur
* @ORM\Column(type="json")
*/
private $roles = [];
/**
* Ordres de mission de l'utilisateur
* @ORM\OneToMany(targetEntity="App\Entity\OrdreMission",mappedBy="user")
*/
private $ordreMissions;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Entreprise",inversedBy="users")
* @ORM\JoinColumn(nullable=false)
*/
private $entreprise;
/**
* String representation of object
* @link http://php.net/manual/en/serializable.serialize.php
* @return string the string representation of the object or null
*/
public function serialize()
{
return serialize([
$this->id,$this->email,$this->password,]);
}
/**
* Constructs the object
* @link http://php.net/manual/en/serializable.unserialize.php
* @param string $serialized <p>
* The string representation of the object.
* </p>
* @return void
*/
public function unserialize($serialized)
{
list (
$this->id,) = unserialize($serialized);
}
当我要添加新车时,出现错误:
序列化以下对象时检测到循环引用 类“ App \ Entity \ User”(配置限制:1)
我在互联网上看到我必须以“最大深度”来做某事,但我不知道我该做些什么,确切地在什么地方
更新:
这是我用来添加Vehicle Object并将其发送的功能控制器:
/**
* Pour créer un nouveau véhicule
*
* @Route("/chef-service/ordres-mission/new/new-vehicule",name="vehicule_create")
* @IsGranted({"ROLE_CHEF_SERVICE"})
* @Method({"POST"})
* @return Response
*/
public function createVehicule(Request $request,EntityManagerInterface $manager)
{
$vehicule = new Vehicule();
$vehicule->setEntreprise($this->adminService->getEntreprise());
$form = $this->createForm(VehiculeType::class,$vehicule,[
'action' => $this->generateUrl($request->get('_route'))
]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$encoders = array(new XmlEncoder(),new JsonEncoder());
$normalizers = array(new ObjectNormalizer());
$serializer = new Serializer($normalizers,$encoders);
$manager->persist($vehicule);
$manager->flush();
$result = $serializer->normalize(
[
'code' => 200,'message' => 'OK','vehicule' => $vehicule,],null,[AbstractObjectNormalizer::ENABLE_MAX_DEpth => true]
);
$jsonContent = $serializer->serialize(
$result,'json'
);
return new Response($jsonContent);
}
return $this->render('ordre_mission/partials/newVehicule.html.twig',[
'formVehicule' => $form->createView(),]);
}