我发现在Yii 1.1.14中,如果在不提交表单的情况下保存对象(实际上是ajax-request),则不会触发beforeSave操作。因此,下面的几行将引发错误,表明created_at是必需的,并且为空:
$Tour_Highlight_Model = new Tour_Highlight;
$Tour_Highlight_Model->name = $name;
$Tour_Highlight_Model->tour_id = $tour_id;
// $Tour_Highlight_Model->created_at = new CDbExpression('NOW()'); // MUST BE UNCOMMENT
$ActionResult = $Tour_Highlight_Model->save(); // BUT VALIDATION IN MODEL WORKS!
public function beforeSave() {
if ($this->isNewRecord) {
$this->created_at = new CDbExpression('NOW()');
}
return parent::beforeSave();
}出什么事了?
发布于 2014-07-04 20:34:20
在引发保存事件之前会运行模型验证,因此您需要使用beforeValidate()而不是beforeSave()。
但最好将代码放入控制器中,而不是放入模型中。
if ($this->isNewRecord) {
$this->created_at = new CDbExpression('NOW()');
}https://stackoverflow.com/questions/24569719
复制相似问题