CakePHP - 如果是INSERT或UPDATE,如何检查beforeSave

时间:2012-12-04 12:46:16

标签: cakephp cakephp-2.0

在我的模型的beforeSave方法中,如何检查保存操作是INSERT还是UPDATE?

我想添加模型数据,但只有在插入新行时才会添加。

4 个答案:

答案 0 :(得分:20)

如果id存在,您只需签入数据:

function beforeSave($options = array())
{
  if(empty($this->data[$this->alias]['id']))
  {
    //INSERT
  }
  else
  {
    //UPDATE
  }
}

答案 1 :(得分:1)

这就是你在 Cakephp 4 中的做法(以防有人在寻找它)

编辑它也适用于 BadHorsie 所说的 Cakephp 3

public function beforeSave(EventInterface $event, EntityInterface $entity, ArrayObject $options)
{
    if ($entity->isNew()) {
       //INSERT
    }else{
       //UPDATE
    }
}

答案 2 :(得分:0)

CakePHP Cookbook

afterSave(boolean $created, array $options = array())

如果创建了新记录(而不是更新),$created的值将为true。

答案 3 :(得分:0)

你可以试试这个

CSS