【问题标题】:Persist entity : cannot be null持久实体:不能为空
【发布时间】:2016-09-23 08:05:51
【问题描述】:

当我使用此代码时,出现此错误“Integrity constraint violation: 1048 Column 'ecriture_id' cannot be null”:

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

如果我取消注释“ $this->em->persist($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;
    }

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

【问题讨论】:

    标签: doctrine-orm doctrine symfony


    【解决方案1】:

    当我向我的数据库添加新列时,我总是遇到类似的问题,并且得到了不能为空的错误。

    为我解决的主要问题是添加 nullable 为 true,然后在 twig、控制器或表单中添加 required = true 属性。因此,它总是必须被填充。

    【讨论】:

      猜你喜欢
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      • 2011-09-22
      • 2014-11-27
      • 1970-01-01
      相关资源
      最近更新 更多