User と Category という 2 つのエンティティがあり、これらは多対多の関係で相互に接続されています。
manyToMany:
categories:
targetEntity: Category
joinTable:
name: users_categories
joinColumns:
user_id:
referencedColumnName: id
inverseJoinColumns:
category_id:
referencedColumnName: id
私の UserAdmin.php (私は Sonata Admin および Sonata User バンドルを使用しています) では、次のフィールドで処理されます。
->add('categories', 'sonata_type_model', array('required' => false, 'expanded' => false, 'multiple' => true, 'label' => 'Chose your categories'))
ここで、カテゴリ エンティティに追加のフィールドを追加する必要があります。user_counter は、それにリンクされたユーザー数を格納します。ユーザーがカテゴリとの関係を追加、更新、または削除するたびに更新する必要があります。
1つのアイデアは、管理フォームを保存する前にカテゴリを取得し、それらを現在の入力と比較してから決定するユーザーエンティティでメソッドを作成することでした(+1または-1を作成するカテゴリカウンター)。そして、このメソッドを lifecycleCallbacks (prePersist および preUpdate) でオンにします。
問題: 私のコードはすべてのユーザー カテゴリを取得し、フォームを保存するたびにそれらを現在の入力と比較します。このようなオーバーヘッドを回避するにはどうすればよいですか? たぶん、このタスクには別の解決策がありますか?
ご協力ありがとう御座います。