【问题标题】:CakePHP - How to check in beforeSave if it's an INSERT or UPDATECakePHP - 如果是 INSERT 或 UPDATE,如何检查 beforeSave
【发布时间】:2012-12-04 12:46:15
【问题描述】:

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

我想添加到模型数据,但前提是它要插入新行。

【问题讨论】:

    标签: cakephp cakephp-2.0


    【解决方案1】:

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

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

    【讨论】:

    • 很简单,我不知道为什么我没有想到这个......:/谢谢!
    • 更新:在 Cake 2.3 中你应该检查 $this->id 是否为空。
    【解决方案2】:

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

    编辑正如 BadHorsie 所说,它也适用于 Cakephp 3

    public function beforeSave(EventInterface $event, EntityInterface $entity, ArrayObject $options)
    {
        if ($entity->isNew()) {
           //INSERT
        }else{
           //UPDATE
        }
    }
    
    【解决方案3】:

    你可以试试这个

    public function beforeSave($options = array()) {
    
        if($this->id) {
            // Update
        } else {
            // Add
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 2013-10-11
      • 2014-12-21
      相关资源
      最近更新 更多