Doctrine orm 持久化实体:不能为空

Doctrine orm 持久化实体:不能为空,doctrine-orm,doctrine,symfony,Doctrine Orm,Doctrine,Symfony,使用此代码时,出现以下错误“完整性约束冲突:1048列'ecriture_id'不能为null”: 如果我取消注释“$this->em->persist($ecriture)”这是真的 我不明白,因为我的“Produit”实体有一个cascade persist: 实体“产品”: class Produit { /** * @ORM\OneToOne(targetEntity="LogicielBundle\Entity\Ecriture", inversedBy="gesti

使用此代码时,出现以下错误“完整性约束冲突:1048列'ecriture_id'不能为null”:

如果我取消注释“$this->em->persist($ecriture)”这是真的

我不明白,因为我的“Produit”实体有一个cascade persist

实体“产品”:

class Produit
{
    /**
     * @ORM\OneToOne(targetEntity="LogicielBundle\Entity\Ecriture", inversedBy="gestionLocativeProduit", cascade={"persist"})
     * @ORM\JoinColumn(nullable=false)
     */
    private $ecriture;

    public function setEcriture(\LogicielBundle\Entity\Ecriture $ecriture)
    {
        $ecriture->setGestionLocativeProduit($this);
        $this->ecriture = $ecriture;
        // Similar problem if I add "$ecriture->setGestionLocativeProduit($this);" right here
        return $this;
    }

    public function getEcriture()
    {
        return $this->ecriture;
    }
class Ecriture
{
    /**
     * @ORM\OneToOne(targetEntity="LogicielBundle\Entity\GestionLocative\Produit", mappedBy="ecriture")
     * @ORM\JoinColumn(nullable=true)
     */
    private $gestionLocativeProduit;

    public function setGestionLocativeProduit(\LogicielBundle\Entity\GestionLocative\Produit $gestionLocativeProduit)
    {
        $this->gestionLocativeProduit = $gestionLocativeProduit;
        return $this;
    }

    public function getGestionLocativeProduit()
    {
        return $this->gestionLocativeProduit;
    }
实体“Ecriture”:

class Produit
{
    /**
     * @ORM\OneToOne(targetEntity="LogicielBundle\Entity\Ecriture", inversedBy="gestionLocativeProduit", cascade={"persist"})
     * @ORM\JoinColumn(nullable=false)
     */
    private $ecriture;

    public function setEcriture(\LogicielBundle\Entity\Ecriture $ecriture)
    {
        $ecriture->setGestionLocativeProduit($this);
        $this->ecriture = $ecriture;
        // Similar problem if I add "$ecriture->setGestionLocativeProduit($this);" right here
        return $this;
    }

    public function getEcriture()
    {
        return $this->ecriture;
    }
class Ecriture
{
    /**
     * @ORM\OneToOne(targetEntity="LogicielBundle\Entity\GestionLocative\Produit", mappedBy="ecriture")
     * @ORM\JoinColumn(nullable=true)
     */
    private $gestionLocativeProduit;

    public function setGestionLocativeProduit(\LogicielBundle\Entity\GestionLocative\Produit $gestionLocativeProduit)
    {
        $this->gestionLocativeProduit = $gestionLocativeProduit;
        return $this;
    }

    public function getGestionLocativeProduit()
    {
        return $this->gestionLocativeProduit;
    }

当我向数据库中添加新列时,我总是遇到类似的问题,并告诉您不能为空错误

对我来说,最主要的修复方法是添加nullable is true,然后在twig、controller或form中添加required=true属性。因此,它总是必须被填满