Forms Symfony 3.3表单为一个字段返回NULL
我试图将表单中的INSERT值导入DB,我的表单字段之一是brand_id,提交时返回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
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;