我的表單包含一個模型對象,它包含使用hasMany相關的五個子對象。當我保存表單時,我注意到所有字段(無論它們是否爲空)都被保存到數據庫中。是否可以在beforeSave()回調方法中設置一個條件來防止沒有值的子項保存?我試圖取消包含空值的數組中的鍵,但該行仍被添加到數據庫中。Cakephp - 有條件保存
這裏是我的'Mtd'模型的代碼。 Mtd模型包含許多Flowratereatments。在我的表格中,我有一個複選框,上面寫着'這是一個基於流量的治療'。所以,如果用戶點擊了它,那麼用戶可以將其填入字段中。但是,如果用戶沒有填寫它,我想阻止添加新行,只用Mtd表的外鍵。
<?php
class Mtd extends AppModel {
public $name = 'Mtd';
public $hasOne = array('Treatmentdesign', 'Volumetreatment');
public $hasMany = 'Flowratetreatment';
function beforeSave() {
if($this->data['Mtd']['is_settling'] != 1){
unset($this->data['Flowratetreatment'][0]);
}
return true;
}
}
?>
感謝您的快速響應對不起,我認爲我的問題有點不清楚,我沒有試圖驗證信息,我試圖做的是「如果與ModelA有關的字段是空的,在數據庫中添加一行「我不想要求用戶填寫這些字段,這些將是可選字段,如果填寫,應該保存,否則,他們不應該是。 – 2012-03-12 17:48:21
你不能使用cakephp創建一個事務,所以如果任何數據產生問題,你創建一個回滾 – Lefsler 2012-03-13 18:22:51