symfony 2列不能为空

symfony 2列不能为空,symfony,Symfony,我在symfony 2中遇到了一个问题。当我尝试在具有外键的表(Sinedries)中插入新行时,我得到的错误列“kod_pelati”不能为null。 主表“Pelates”: 明细表实体“Sinedries”: 控制员: $sinedria = new Sinedries(); $sinedria->setKodPelati($idPelati); $em = $this->getDoctrine()->ge

我在symfony 2中遇到了一个问题。当我尝试在具有外键的表(Sinedries)中插入新行时,我得到的错误列“kod_pelati”不能为null。 主表“Pelates”:

明细表实体“Sinedries”:

控制员:

        $sinedria = new Sinedries();
    $sinedria->setKodPelati($idPelati);             


    $em = $this->getDoctrine()->getManager();


    $form = $this->createForm(new SinedriesType(), $sinedria);

    $form->handleRequest($request);


    if ($form->isValid()) {
    // perform some action, such as saving the task to the database
        $em->persist($sinedria);
        $em->flush();
我尝试了没有形式,但出现了同样的问题。同样,带有update语句的类似控制器也可以正常工作。 你有什么建议吗?
谢谢。

尝试将nullable=true添加到join列


这主要是因为sql希望此列有一个值

您可以通过以下任一方法解决此问题:

  • 将kodPelati设置为可空:

    /**

    • @变量整数
    • @ORM\Column(name=“kod\u pelati”,type=“integer”,nullable=true) */ 私人$kodPelati
  • 如果希望用户将此输入值作为强制值;然后,您可以为该字段提供验证条件:

    /**

    • @变量整数
    • @断言\NotBlank()
    • @ORM\Column(name=“kod\u pelati”,type=“integer”,nullable=true) */ 私人$kodPelati
  • /**
     * @var integer
     *
     * @ORM\Column(name="kodikos", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $kodikos;
    
    /**
     * @var integer
     *
     * @ORM\Column(name="kod_pelati", type="integer")
     */
    private $kodPelati;
    
        /**
     * Set kodPelati
     *
     * @param integer $kodPelati
     * @return Sinedries
     */
    public function setKodPelati($kodPelati)
    {
        $this->kodPelati = $kodPelati;
    
        return $this;
    }
    
    /**
     * Get kodPelati
     *
     * @return integer 
     */
    public function getKodPelati()
    {
        return $this->kodPelati;
    }
    
    /**
     * @ORM\ManyToOne(targetEntity="Pelates", inversedBy="sinedries")
     * @ORM\JoinColumn(name="kod_pelati", referencedColumnName="kodikos", onDelete="CASCADE")
     */
    private $pelates;
    
            $sinedria = new Sinedries();
        $sinedria->setKodPelati($idPelati);             
    
    
        $em = $this->getDoctrine()->getManager();
    
    
        $form = $this->createForm(new SinedriesType(), $sinedria);
    
        $form->handleRequest($request);
    
    
        if ($form->isValid()) {
        // perform some action, such as saving the task to the database
            $em->persist($sinedria);
            $em->flush();