持久化实体:不能为空

时间:2016-09-23 08:05:52

标签: doctrine-orm doctrine symfony

当我使用此代码时,我有这个错误" 完整性约束违规:1048列' ecriture_id'不能为空" :

    $produit = new Produit();
    $ecriture = new Ecriture();
    $produit->setEcriture($ecriture);
    // $this->em->persist($ecriture);
    $this->em->persist($produit);

如果我取消注释" $ this-> em-> persist($ ecriture) "它的工作正常。

我不明白,因为我的" Produit"实体具有级联持久性

实体"生产" :

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;
    }

实体" 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;
    }

1 个答案:

答案 0 :(得分:0)

当我向数据库中添加新列时,我总是遇到类似问题,并且让你知道不能为空错误。

对我来说最重要的是添加nullable是真的,然后在twig,controller或form中添加required = true属性。因此,它总是必须被填补。