在Symfony2中使用Collection与关系

时间:2013-01-30 09:22:30

标签: symfony doctrine-orm

调用关系字段时是否可以在表单类型中使用集合?

这就是我想要做的事情:

我和候选人实体之间有关系。区域候选人可以属于多个区域的实体。

我以这种方式设置表单类型:

候选人类型

$builder
    ->add('name')
    ->add('district', 'collection', array('type'=>new districtsChoiceType()))

区域选择类型

$builder
        ->add('candidate', 'entity', array(
                'class' => 'CMSElectionsBundle:districts',
                'query_builder' => function(EntityRepository $get) {
                    return $get->createQueryBuilder('p')->where('p.status = 1')->orderBy('p.id', 'ASC');
                }, 'property' => 'name', 'label' => ' '))

所以我在这里面临两个问题:

  1. 当我想创建一个新候选人时,分区字段显示为空/
  2. 当我尝试编辑现有候选人时,我收到以下错误:

    Expected argument of type "array or (\Traversable and \ArrayAccess)", "Proxies\__CG__\CMS\ElectionsBundle\Entity\districts" given
    

1 个答案:

答案 0 :(得分:0)

我会为candidateType执行此操作:

$builder            
    ->add('districts', 'entity', array(
                'label' => 'Districts',
                'class' => 'CMSElectionsBundle:District',
                'query_builder' => function(\CMS\ElectionsBundle\Entity\DistrictRepository $er) {
                    return $er->createQueryBuilder('a')
                        ;
                },
                'property' => 'choose one property from district',
                'expanded' => true,
                'multiple' => true,
                'required' => true,
            ))

您能否向我们展示您在两个实体中用于创建关系的代码?

相关问题