我需要在 updateAll() 上触发 beforeSave() 和 afterSave() 回调。我使用 updateAll() 因为我需要更新 ID 字段..(我知道关于可编辑 ID 的事情有点“错误”,但我使用的这个数据库已经像那样混乱了)。
我需要做的是,触发 updateAll() 触发 beforeSave() 和 afterSave(),就像 save() 一样。
这是 CakePHP 1.3 中的 updateAll()
function updateAll($fields, $conditions = true) {
$args = func_get_args();
$output = call_user_func_array(array('parent', 'updateAll'), $args);
if ($output) {
$created = false;
$options = array();
$this->Behaviors->trigger($this, 'afterSave', array(
$created,
$options,
));
$this->afterSave($created);
$this->_clearCache();
return true;
}
return false;
}
然后这是我在 CakePHP 2.3 中调整的代码
function updateAll($fields, $conditions = true) {
$args = func_get_args();
$output = call_user_func_array(array('parent', 'updateAll'), $args);
if ($output) {
$created = false;
$options = array();
$event = new CakeEvent('Model.afterSave', $this, array($created, $options));
$this->getEventManager()->dispatch($event);
$this->afterSave($created);
$this->_clearCache();
return true;
}
return false;
}
问题是,如果我想在 updateAll 中调用 beforeSave() 怎么办?