[英]Sonata Admin: How to represent a Many to Many in the edit form when the associated entity has thousands of records?
在我的实体中,角色和用户之间存在多对多关系
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="roles")
*/
protected $users;
在Role
实体的编辑表单中,我希望能够看到具有该角色的用户,并且也能够添加和删除用户,因此我在configureFormFields
添加了一个users
字段。
protected function configureFormFields(FormMapper $formMapper) {
$formMapper
->add('name')
->add('description')
->add('users');
}
问题在于Sonata的方法非常幼稚:呈现此表单,它执行一个查询以检索角色的字段,一个查询以检索具有该角色的用户的字段,并检索所有用户的字段数据库 !!!
由于我在数据库中拥有超过20,000个用户,因此使用了250MB以上的内存 。
有没有一种方法可以指示Sonata显示带有搜索或类似内容的分页列表?
pcdummy / AjaxCompleteBundle对您有什么好处吗? 我今天偶然发现了这一点。
而且我还建议创建单独的中间users_roles实体(以及它的管理员)。 然后,使用sonata_type_collection,可以将Group:userGroups字段添加到Group admin。 切记不要在UsersGroupAdmin
表单配置中包括group
字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.