Forms Symfony 3.3表单为一个字段返回NULL

Forms Symfony 3.3表单为一个字段返回NULL,forms,symfony,doctrine,Forms,Symfony,Doctrine,我试图将表单中的INSERT值导入DB,我的表单字段之一是brand_id,提交时返回NULL 有两个实体具有多对一关系 品牌 id 名字 型号 身份证 品牌识别码(FK) 名字 图片地址 评论 所有字段都返回一个值,但品牌标识返回NULL 代码和实体如下所示: 品牌实体: <?php // src/coreBundle/Entity/Brand.php namespace coreBundle\Entity; use Doctrine\ORM\Mapping as ORM; use co

我试图将表单中的INSERT值导入DB,我的表单字段之一是brand_id,提交时返回NULL

有两个实体具有多对一关系

品牌
id
名字

型号
身份证
品牌识别码(FK)
名字
图片地址
评论

所有字段都返回一个值,但品牌标识返回NULL

代码和实体如下所示:

品牌实体:

<?php
// src/coreBundle/Entity/Brand.php
namespace coreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use coreBundle\Entity\Model;
use Doctrine\Common\Collections\ArrayCollection;

/**
*@ORM\Entity
*@ORM\Table(name="brand")
*/
class brand
{


    /**
     * @var int
     * @ORM\Id
     * @ORM\Column(name="id", type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
public $id;

    /**
    *@ORM\Column(type="string", length=100)
    */
    private $name;

    /**
     *@ORM\OneToMany(targetEntity="model", mappedBy="brands")
     */
    protected $models;
    public function __construct()
    {
        $this->models = new ArrayCollection();
    }

    /**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set name
     *
     * @param string $name
     *
     * @return brand
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }

    /**
     * Get name
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }



    /**
     * Add model
     *
     * @param \coreBundle\Entity\model $model
     *
     * @return brand
     */
    public function addModel(\coreBundle\Entity\model $model)
    {
        $this->models[] = $model;

        return $this;
    }

    /**
     * Remove model
     *
     * @param \coreBundle\Entity\model $model
     */
    public function removeModel(\coreBundle\Entity\model $model)
    {
        $this->models->removeElement($model);
    }

    /**
     * Get models
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getModels()
    {
        return $this->models;
    }
}
尝试删除以下内容:

   *@ORM\Column(type="integer")
   */
   public $brand_id;
因为在这一点上,您已经有了品牌字段:

    /**
    *@ORM\ManyToOne(targetEntity="brand", inversedBy="models")
    *@ORM\JoinColumn(name="brand_id", referencedColumnName="id")
    */
    protected $brands;
您还需要删除brandId的getter和seeter,并从表单中删除brand_id,然后添加以下内容,例如:

       ->add('brand', EntityType::class, array(
            // query choices from this entity
            'class' => 'AppBundle:Brand',
        ))
试试这个

/**
*@ORM\ManyToOne(targetEntity="brand")
*@ORM\JoinColumn(nullable=false)
*/
protected $brands;

然后它给出了errros on Getter和Setter方法您需要删除brandId Getter和Setter并编辑表单从模型实体中删除brand_id并添加BrandRemoved、Getter和Setter以及brand_id,现在我应该在表单中的何处编辑,有任何提示吗?我尝试了以下->添加('brands',TextType::class,array('label'=>'Brand Id'))而不是->添加('Brand_Id',TextType::class,array('label'=>'Brand Id'))它给出了一个例外:类型为“coreBundle\Entity\Brand”的预期参数,“string”给出了任何想法?我已经用解决方案更新了答案,但我建议您查看symfony form builder文档。多谢,它终于成功了,这意味着基于关系的列(品牌id)不需要出现在实体中。我接受了你的回答。再次感谢。
       ->add('brand', EntityType::class, array(
            // query choices from this entity
            'class' => 'AppBundle:Brand',
        ))
/**
*@ORM\ManyToOne(targetEntity="brand")
*@ORM\JoinColumn(nullable=false)
*/
protected $brands;