学说级联:[delete]不调用相关对象的delete()方法
问题描述:
我在我的项目中使用Doctrine 1.2。 schema.yml文件包含了:学说级联:[delete]不调用相关对象的delete()方法
Campaign:
tableName: campaign
actAs:
Timestampable:
created:
name: created_datetime
type: timestamp
format: Y-m-d H:i:s
updated:
disabled: true
columns:
id:
type: integer(9)
fixed: false
unsigned: false
primary: true
autoincrement: true
...
relations:
CampaignImages:
local: id
foreign: campaign_id
type: many
cascade: [delete]
...
CampaignImages:
tableName: campaign_images
columns:
id:
type: integer(9)
fixed: false
unsigned: false
primary: true
autoincrement: true
campaign_id:
type: integer(9)
fixed: false
unsigned: false
primary: false
notnull: true
autoincrement: false
...
我已经定义CampaignImages :: delete()方法,并把一些调试代码存在,但它在运动::删除没有得到执行()被调用。
是不是级联:[删除]意味着精度为此原因?我不想使用数据库级联级联,因为在删除记录时必须删除与CampaignImage关联的图像文件。
答
级联删除不运行delete()方法。但是,它保证了钩子运行。
如果您需要实现任何先/后删除逻辑,您不应该覆盖delete()方法,而应该使用preDelete()或postDelete()挂钩。
答
你是不是想找
onDelete: CASCADE
这听起来更像是你想要的选项。
+0
“onDelete:CASCADE”用于数据库级联级联。它完全绕过了教条。 – 2010-07-14 06:47:03
答
我已经以另一种方式解决
在运动类你把这个
public function setUp() {
parent::setUp();
// to delete cascaded items
$CampaignRel = $this->_table->getRelation("CampaignImages");
$CampaignRel->offsetSet('cascade', array('delete'));
}
它为我做的工作,这样
感谢哭吧,我一直在寻找的只是那。 – fest 2010-07-15 07:58:56