【发布时间】:2012-09-06 19:25:37
【问题描述】:
我想在 afterSave() 中检测是否插入了新记录或更新了旧记录,但我不知道如何。
我曾考虑在 beforeSave() 中编写一个配置变量(如果未设置 id,我可以在其中检测插入)但也许这不是一种安全的方法。
有什么想法吗?
【问题讨论】:
标签: cakephp
我想在 afterSave() 中检测是否插入了新记录或更新了旧记录,但我不知道如何。
我曾考虑在 beforeSave() 中编写一个配置变量(如果未设置 id,我可以在其中检测插入)但也许这不是一种安全的方法。
有什么想法吗?
【问题讨论】:
标签: cakephp
您可以使用 afterSave( $model, $created ) 函数来实现。
因为,afterSave() 函数的 第二个参数 是 Boolean,如果 创建了新行,则为 true 否则它会给你false。
【讨论】:
afterSave API 也不同:afterSave(boolean $created, array $options = array()); more info
您可以通过在此处编写以下代码行来检查这一点:
public function afterSave(Event $event, Entity $entity, array $options) {
if ($entity->isNew()) {
// do whatever you need to do here.
}
}
【讨论】:
传递 id(当记录更新时)并在 saveall 或 save 后立即保存 也可以提供帮助。 例如; $this->set('id', $this->MyModule->id);
【讨论】: