我希望在保存记录并将其标记为活动时,所有其他记录都标记为“非活动”。
我在我的模型中尝试了以下代码:
public function beforeSave($options = array()) {
if (!empty($this->data['Ticket']['is_active'])) {
$this->data['Ticket']['is_active'] = 0;
}
return true;
}
但是此代码错误
答案 0 :(得分:2)
而不是使用beforeSave,使用afterSave和updateAll更合适:
public function afterSave($created) {
if (!empty($this->data[$this->alias]['is_active'])) {
$this->updateAll(
array('is_active' => 0),
array(
'id !=' => $this->id,
'is_active' => 1
)
);
}
}
即。 在成功保存 记录后,如果已激活则禁用所有其他记录。
注意:请确保使用与父类相同的方法签名。它取决于您使用的CakePHP版本。
答案 1 :(得分:0)
您可以在保存方法之前编写
public function beforeSave($options=array()){
if (!empty($this->data[$this->alias]['is_active'])) {
$this->data[$this->alias]['is_active'] = 0;
}
return true;
}