2012-08-01 67 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而言,這不是觸發器,如果​​您想在保存之前執行一些代碼,則可以在模型中覆蓋它。