在我的实体模型中,我有一个User
,它通过Enrollment
中的Organization
连接。
User
与Enrollment
有一对一的关系,Enrollment
与{{1}有多对一关系 }}
Organization
的属性已批准
当用户注册时,我希望在下拉选项列表中有组织名称列表。
如果Enrollment
注册了User
对象,则会将Enrollment
与User
相关联。
由于Organization
和User
之间没有直接链接,因此似乎无法在Symfony2表单中获取它。
关于如何在表单中嵌入深层关系的任何想法?如果有直接链接,我通常只使用表单构建器并添加实体,但现在没有直接链接。
答案 0 :(得分:0)
如果您可以确定,用户每次注册时都可以执行以下操作:
$builder->add('organizations', 'entity', array('property_path' => 'enrollment.organizations', ));
或其他解决方案可能是,如果您定义一个querybuilder
$builder->add('organisations', 'entity', array(
'class' => '%ENTITY_NAME%',
'query_builder' => function (%REPOSITORY_NAME% $repository) {
return %QUERY%;
}
));
或使用事件监听器
$builder->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $event) use ($factory) {
$data = $event->getData();
if ($data->getEnrollment()) {
$organisations = $data->getEnrollment()->getOrganisations();
} else {
$organisations = ...
}
$form = $event->getForm();
$form->add($factory->createNamed('organizations', 'entity', $organisations, array('required' => false)));
});