在我的项目中,我有2个表Devis和DetailsDevis,它们都与ManyToOne映射链接 戴维斯:
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="boolean")
*/
private $devis_admin;
/**
* @ORM\OneToOne(targetEntity="App\Entity\DetailsDevis", mappedBy="devis_id", cascade={"persist"})
*/
private $devis_id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="utilisateur_id")
* @ORM\JoinColumn(nullable=false)
*/
private $utilisateur_id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $intitule_devis;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $periodicite;
/**
* @ORM\Column(type="blob", nullable=true)
*/
private $rappel_du_besoin;
还有我的DetailsDevis实体:
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="integer")
*/
private $quantite;
/**
* @ORM\Column(type="decimal", precision=9, scale=2)
*/
private $prix_vente;
/**
* @ORM\Column(type="decimal", precision=5, scale=2)
*/
private $taxe_vente;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Devis", inversedBy="devis_id", cascade={"persist"})
* @ORM\JoinColumn(nullable=false)
*/
private $devis_id;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Produit", mappedBy="detailsDevis")
*/
private $produits;
在我的一个控制器中,我想实例化一个新的devis对象,我这样做了:
$devis = (new Devis())
->setDevisAdmin(0)
->setUtilisateurId($this->getUser());
$this->entityManagerInterface->persist($devis);
$this->entityManagerInterface->flush();
但是当我尝试运行代码时,出现以下错误:
通过关系发现了一个新实体 未配置为级联的'App \ Entity \ Produit#detailsDevis' 持久化实体的操作: App \ Entity \ DetailsDevis @ 000000006abb04ea000000001f58b5a5。解决 此问题:在此上显式调用EntityManager#persist() 未知实体或配置级联会将该关联保留在 映射,例如@ManyToOne(..,cascade = {“ persist”})。如果你不能 找出导致问题实施的实体 “ App \ Entity \ DetailsDevis #__ toString()”以获取线索。
事实是DetailsDevis
已经具有 cascade={"persist"}
关联映射。
该消息还告诉我,创建一个__toString()
可以帮助我找到线索。但是我不知道创建该toString所需返回的内容,我在表上的大多数信息都是十进制或关系式的。有人知道该怎么做吗?
谢谢你。