保存HABTM连接模型时,CakePHP忽略beforeSave方法

时间:2012-08-01 21:03:32

标签: cakephp has-and-belongs-to-many scaffolding before-save

所以我有三种模式:

教练:var $ hasAndBelongsToMany = array(“Tour”)

游览:var $ hasAndBelongsToMany = array(“Coach”)

CoachesTour:var $ belongsTo = array(“Tour”,“Coach”)

Coach和Tour之间有一个HABTM关联,它应该使用CoachesTour作为连接模型。

我正在使用脚手架。修改Tour时,如果向其添加新的CoachesTour,则不会调用CoachesTour的beforeSave方法。似乎连接模型的记录作为SQL语句插入,而不是使用连接模型。

我在这里错过了什么吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

如果使用saveAll保存数据,则不会调用beforeSave回调。 你必须覆盖saveAll函数。

例如在您的模型中:

public function saveAll($data, $options = array()) {
            /*
            your code you want execute before saving...
            */
    parent::saveAll($data, $options);
}

你必须知道其他保存方法(saveMany,saveAssociated,save)beforeSave回调是在保存之前触发的。但是对于saveAll它不是触发器,你可以在你的模型中覆盖它,如果你想在保存之前执行一些代码。