0

私は 2 つのエンティティCategoryとを持っImageています。カテゴリには多くの画像を含めることができるため、基本的には 1 対多の関係ですがImage、他のエンティティからも参照できます。そのため、mm テーブルを介して unique=true 制約を使用して多対多を実行しています。

だから私の構造は次のようなものです:

category
-- id

images
-- id

category_images
-- category_id
-- image_id

今、次のようなことをして、カテゴリから画像を削除したいだけです:

$category->images = new ArrayCollection();

また

unset($category->images);

ここでの問題は、これが接続のみを削除することです。たとえば、mm テーブルのレコード ( ) は正しいですが、mm レコードを削除すると、テーブルcategory_images内の関連するレコードも削除する注釈が必要でしょうか?images

これは mm の考え方から少しずれていることはわかっていますが、1 つの画像が 2 つのエンティティによって参照されるケースはないので、うまくいくはずです。

最後のアイデアは、さまざまなエンティティに画像を添付する機能を持ち、それらを削除する簡単な「自動」方法を提供することです。

何か案は?

4

1 に答える 1

0

Engine = InnoDBを使用するようにテーブルを設定できる場合は、外部キー制約を使用して、親テーブルの行が削除されたときに子テーブルの行を自動的に削除できます。詳細を見る

ON DELETE CASCADE

http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.htmlで。

于 2012-12-13T13:39:15.847 に答える