Symfony2多个字段到具有多对多关系的同一属性
我正在从一个实体创建一个表单,我有一些属性,其中一个具有多对多关系,我需要创建多个字段来处理 产品实体Symfony2多个字段到具有多对多关系的同一属性,symfony,Symfony,我正在从一个实体创建一个表单,我有一些属性,其中一个具有多对多关系,我需要创建多个字段来处理 产品实体 /** * @ORM\ManyToMany(targetEntity="StructureItems", inversedBy="product") * @ORM\JoinTable(name="product_structure_items", * joinColumns={@ORM\JoinColumn(name="product_id", referencedColumn
/**
* @ORM\ManyToMany(targetEntity="StructureItems", inversedBy="product")
* @ORM\JoinTable(name="product_structure_items",
* joinColumns={@ORM\JoinColumn(name="product_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="structure_item_id", referencedColumnName="id")}
* )
*/
protected $structureItems;
/**
* @ORM\ManyToMany(targetEntity="Products", mappedBy="structureItems")
*/
protected $product;
结构项目实体
/**
* @ORM\ManyToMany(targetEntity="StructureItems", inversedBy="product")
* @ORM\JoinTable(name="product_structure_items",
* joinColumns={@ORM\JoinColumn(name="product_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="structure_item_id", referencedColumnName="id")}
* )
*/
protected $structureItems;
/**
* @ORM\ManyToMany(targetEntity="Products", mappedBy="structureItems")
*/
protected $product;
所以在我的表单类型中,我正在做的事情如下所示
表单类型
->add('field1','entity',
array(
'class' => 'WidetiHarmoniaBundle:StructureItems',
'label' => 'Tecido da Fronha',
'empty_value' => 'Selecione o tipo de fronha',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('psi')
->where('psi.itemType = :itemType')
->setParameter('itemType', Enumeration::FIELD_1)
->orderBy('psi.itemName', 'ASC');
},
'mapped' => false,
)
)
->add('field2','entity',
array(
'class' => 'WidetiHarmoniaBundle:StructureItems',
'label' => 'Tecido da Fronha',
'empty_value' => 'Selecione o tipo de fronha',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('psi')
->where('psi.itemType = :itemType')
->setParameter('itemType', Enumeration::FIELD_2)
->orderBy('psi.itemName', 'ASC');
},
'mapped' => false,
)
)
在本例中,我将获取控制器中未映射表单字段的值,并手动将其添加到structureItems属性中。类似于
$entity->addStructureItem($form["field1"]->getData());
$entity->addStructureItem($form["field2"]->getData());
问题是,我不知道这是否是正确的方法,或者是否有更好的解决方案。如果不是最好的解决方案,花更多的时间在上面可能不是一个好办法
我希望有一种方法可以将这些字段映射到相同的属性,这可以帮助我避免大量手动编码工作
任何帮助都将不胜感激 您当然希望嵌入一个集合:
$builder->add('structureItems', 'collection', array(
'type' => new StructureItems(),
'allow_add' => true,
));
更多信息请访问