我正在尝试从Symfony 2形式的实体列表中提供选择,如下所示:
$builder->add('users', 'entity', array(
'class' => 'AcmeHelloBundle:Country',
'property' => '.....',
));
问题是该属性是当前语言中国家/地区的标签,因此它应该使用语言表上的联接进行查询。
有没有办法在不使用"query_builder"选项来保持User
和Country
之间的形式关系的情况下做到这一点?
解决方案是使用"query_builder"选项获取数据(不要忘记"addSelect"),然后使用"属性"选项获取第一个翻译:
$builder
->add('country', 'entity', array(
'empty_value' => 'Select',
'label' => 'form.country',
'class' => 'MySiteBundle:Pays',
'property' => 'fkLibTradG.trads[0].valeur',
'query_builder' => function(DoctrineORMEntityRepository $er) {
return $er->createQueryBuilder('p')
->addSelect('tg')
->addSelect('t')
->join('p.fkLibTradG', 'tg')
->join('tg.trads', 't')
->where('t.fkLanguage = :language')
->setParameter('language', 1)
;
}
))
;