2012-08-01 71 views
1

所以我有三个型号:CakePHP的保存HABTM时忽略beforeSave方法加盟模式

教练的:var $ hasAndBelongsToMany =阵列( “游”)

游的:var $ hasAndBelongsToMany =阵列( “教练”)

CoachesTour的:var $ =属于关联阵列(“游”,“教练”)

有教练和旅游之间的关联HABTM,它应该使用CoachesTour作为连接模式。

我正在使用脚手架。修改Tour时,如果我添加一个新的CoachesTour,CoachesTour的beforeSave方法不会被调用。看起来好像连接模型的记录被插入为SQL语句,而不是使用连接模型。

我在这里错过了什么吗?

感谢,

+0

尝试不用脚手架。我认为脚手架是一个坏主意。 – 2012-08-01 23:22:49

回答

0

如果用白水用于保存数据,该beforeSave回调不会叫。 您必须覆盖saveAll函数。

例如,在你的模型:

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

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