我有两个实体Category
和Image
,一个类别可以有很多图像,所以基本上是一对多的关系,但Image
也可以从其他实体引用。这就是为什么我通过 mm 表使用唯一=true 约束进行多对多的原因。
所以我的结构是这样的:
category
-- id
images
-- id
category_images
-- category_id
-- image_id
现在我只想通过执行以下操作从类别中删除图像:
$category->images = new ArrayCollection();
或
unset($category->images);
这里的问题是这只会删除连接,例如 mm 表中的记录 ( category_images
),这是正确的,但我可能需要一个注释,在删除 mm 记录时,也会删除images
表中的相关记录?
我知道这有点偏离 mm 的想法,但我没有两个实体引用单个图像的情况,所以它应该对我有用。
最终的想法是能够将图像附加到不同的实体,并提供一种简单的"自动"方法来删除它们。
有什么想法吗?
如果可以将表设置为使用 Engine=InnoDB,则可以使用外键约束在删除父表中的行时自动删除子表中的行。查看详情
ON DELETE CASCADE
在 http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html。