2

在我的实体中,角色和用户之间存在多对多关系

/**
 * @ORM\ManyToMany(targetEntity="User", mappedBy="roles")
 */
protected $users;

Role实体的编辑表单中,我希望能够看到具有该角色的用户,并添加和删除用户,所以我usersconfigureFormFields

protected function configureFormFields(FormMapper $formMapper) {
    $formMapper
        ->add('name')
        ->add('description')
        ->add('users');
}

问题是 Sonata 的方法非常幼稚:为了呈现这个表单,它执行一个查询来检索角色的字段,一个查询来检索具有该角色的用户的字段,以及一个检索ALL THE USERS IN的字段数据库!!!

由于我在数据库中有超过 20,000 个用户,这使用了超过 250MB 的内存

有没有办法指示奏鸣曲显示带有搜索或类似功能的分页列表?

4

1 回答 1

1

pcdummy /AjaxCompleteBundle有什么兴趣吗?我今天偶然发现了这一点。

而且我还建议创建单独的中间 users_roles 实体(以及它的管理员)。然后,使用 sonata_type_collection,您可以将 Group:userGroups 字段添加到 Group admin 中。请记住不要在表单配置中包含group字段。UsersGroupAdmin

于 2013-07-26T09:25:47.500 回答