我在entitytype类
中有这个功能public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
//...other controls
->add('types', 'entity', array(
'class' => 'MyApplicationBundle:Type',
'property' => 'type',
'expanded' => false,
'multiple' => true))
->add('save', 'submit');
}
归档实体有一个类型属性,多个可能是关系
/**
* @ORM\ManyToMany(targetEntity="Type", mappedBy="archives")
**/
private $types;
类型实体在另一侧有一个档案属性
/**
* @ORM\ManyToMany(targetEntity="Archive", inversedBy="types")
* @ORM\JoinTable(name="types_archives")
**/
private $archives;
使用选择多个控件正确显示表单但我只能保存在存档表中,而不能保存在types_archives表中。有关如何修复的任何想法? 另外,我可以向同一类型添加多个实体吗?
谢谢
答案 0 :(得分:1)
如果只保存在数据库中的关系的一面,请尝试执行以下步骤:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
//...other controls
->add('types', 'entity', array(
'class' => 'MyApplicationBundle:Type',
// This makes form call setter method on related entity
'by_reference' => false,
'allow_add' => true,
'allow_delete' => true,
'property' => 'type',
'expanded' => false,
'multiple' => true))
->add('save', 'submit');
}
Archive
实体中的:
public function addType(Type $type){
$this->types[] = $type;
$type->addArchive($this);
}
public function removeType(Type $type){
$this->types->removeElement($type);
$type->setArchive(null);
}
我希望这有助于解决问题的第一部分。
对于第二部分,您可以使用collection
类型检查以下链接:
http://symfony.com/doc/current/reference/forms/types/collection.html
答案 1 :(得分:0)
以下是我会给你的一些指示。 1.要保存相关实体,请尝试阅读" cascade persist"如果你使用的是学说。 2.要在表单上有多个实体,请阅读"类组成"。一个复合对象,您将其设置为表单"数据类"将允许您包含多个实体对象。