在我的实体中,我在角色和用户之间存在多对多的关系
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="roles")
*/
protected $users;
在Role
实体的编辑表单中,我希望能够看到具有该角色的用户,以及添加和删除用户,因此我在users
字段中添加了configureFormFields
字段{1}}
protected function configureFormFields(FormMapper $formMapper) {
$formMapper
->add('name')
->add('description')
->add('users');
}
问题在于Sonata的方法非常幼稚:要呈现此表单,它会执行一个查询来检索角色的字段,一个用于检索具有此角色的用户的字段,另一个用于检索<的字段。 strong>数据库中的所有用户 !!!
由于我在数据库中拥有超过20,000名用户,因此使用超过250MB的内存。
有没有办法指示Sonata显示带搜索的分页列表或类似内容?
答案 0 :(得分:1)
pcdummy/AjaxCompleteBundle可能有兴趣吗?我今天偶然发现了这件事。
我还建议创建单独的中间user_roles实体(以及它的管理员)。然后,使用sonata_type_collection,您可以将Group:userGroups字段添加到Group admin中。请务必不要在group
表单配置中包含UsersGroupAdmin
字段。