CakePHP-如果它是';是插入还是更新

CakePHP-如果它是';是插入还是更新,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,在我的模型的beforeSave方法中,如何检查保存操作是插入还是更新 我想添加到模型数据中,但仅当它插入新行时才添加。如果id存在,您只需签入数据即可: function beforeSave($options = array()) { if(empty($this->data[$this->alias]['id'])) { //INSERT } else { //UPDATE } } 你可以试试这个 public function bef

在我的模型的
beforeSave
方法中,如何检查保存操作是插入还是更新


我想添加到模型数据中,但仅当它插入新行时才添加。

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

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

public function beforeSave($options = array()) {

    if($this->id) {
        // Update
    } else {
        // Add
    }
}

这是您在CakePHP4中的做法(以防有人在寻找它)

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

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

很简单,我不知道为什么我没有想到这个…:/谢谢更新:在Cake 2.3中,您应该检查$this->id是否为空。