Php Symfony:仅更改EntityType字段的显示关系
我在表用户和组之间建立了多对多关系。某些组会根据用户的类型自动分配给用户。其他组可以由管理员使用用户编辑表单进行管理 为了实现管理员只能管理应该管理的组,我使用EntityType表单类型的query\u builder选项Php Symfony:仅更改EntityType字段的显示关系,php,forms,symfony,Php,Forms,Symfony,我在表用户和组之间建立了多对多关系。某些组会根据用户的类型自动分配给用户。其他组可以由管理员使用用户编辑表单进行管理 为了实现管理员只能管理应该管理的组,我使用EntityType表单类型的query\u builder选项 $builde->add('groups', EntityType::class, [ // ... 'query_builder' => function (EntityRepository $er) { return $er-
$builde->add('groups', EntityType::class, [
// ...
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('g')
->where('g.type = ?1')
->setParameter(1, 'user_managed');
},
'multiple' => true,
// ...
]);
现在我的问题是,在保存用户实体时,只有在表单中选择的组与用户关联,并且删除了所有未显示的关联
是否有办法只更改显示的组与用户的关联,而不是所有组的关联
谢谢为了不直接映射对象中的信息,您可以在类型中使用“映射”选项:
$builder->add('groups', EntityType::class, [
// ...
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('g')
->where('g.type = ?1')
->setParameter(1, 'user_managed');
},
'multiple' => true,
// ...
'mapped' => false
]);
这样,信息不会覆盖对象中的“组”属性。
表单验证后,您将获得提交的信息:
$groups = $form->get("group")->getData();
现在您可以检查两个数组$user->groups和$groups之间的差异 这样做很重要,但效果非常好。谢谢