2

私のエンティティでは、ロールとユーザーの間に多対多の関係があります

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

エンティティの編集フォームで、Roleそのロールを持つユーザーを表示し、ユーザーも追加および削除できるようにしたいので、usersフィールドを追加しましたconfigureFormFields

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

問題は、Sonata のアプローチが非常に単純なことです。このフォームをレンダリングするには、1 つのクエリを実行してロールのフィールドを取得し、1 つをこのロールを持つユーザーのフィールドを取得し、もう 1 つを実行してすべてのユーザーのフィールドを取得します。データベース!!!

データベースに 20,000 人を超えるユーザーがいるため、これは250MB を超えるメモリを使用します。

検索などでページ分割されたリストを表示するようにソナタに指示する方法はありますか?

4

1 に答える 1

1

pcdummy /AjaxCompleteBundleに興味はありますか? 私は今日これに出くわしました。

また、個別の中間 users_roles エンティティ (およびその管理者) を作成することもお勧めします。次に、sonata_type_collection を使用して、Group:userGroups フィールドをグループ管理に追加できます。フォーム構成にgroupフィールドを含めないでください。UsersGroupAdmin

于 2013-07-26T09:25:47.500 に答える