通过该关系发现了一个新实体,该关系未配置为对实体

时间:2020-09-14 08:41:52

标签: php symfony doctrine-orm

在我的项目中,我有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所需返回的内容,我在表上的大多数信息都是十进制或关系式的。有人知道该怎么做吗? 谢谢你。

0 个答案:

没有答案