【问题标题】:Is there a way to pass data from beforeSave() to afterSave() in cakePHP?有没有办法在 cakePHP 中将数据从 beforeSave() 传递到 afterSave()?
【发布时间】:2017-08-28 17:39:27
【问题描述】:

我在 CakePHP 工作。在beforeSave() 中,我将数据库中的列值与即将保存的更新列值进行比较。我想将此数据传递给afterSave() 回调以确定回调的作用。有没有办法将数据从beforeSave() 传递到afterSave()

【问题讨论】:

    标签: php cakephp orm


    【解决方案1】:

    您可以通过模型的save(array $data = null, array $params = array()) 函数将参数传递给您的回调beforeSave(array $options = array())afterSave(boolean $created, array $options = array())

    这是一个例子

    //In your controller
    $this->Post->save($data, array('arg1' => $value));
    
    //In the Post Model
    beforeSave($options = array()){
       // $options contains the arg1 param 
    }
    
    afterSave($created, $options = array()){
       // $options contains the arg1 param
    }
    

    试试看:)

    【讨论】:

      【解决方案2】:

      我没有专门使用cakePHP,但如果它类似于其他一些MVC框架,beforeSave()afterSave()回调在类似的上下文中执行(它们属于同一个对象——一个模型或控制器)。

      如果是这种情况,一个简单的解决方案是简单地使用自定义类属性来跟踪您的数据。

      private $custom;
      
      beforeSave(){
         // save what you want to access later
         $this->custom = 'comparison result';
      }
      
      afterSave(){
         // retrieve what we found in beforeSave()
         $custom = $this->custom;
      }
      

      【讨论】:

      • 太棒了!谢谢!
      猜你喜欢
      • 2020-03-02
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 2019-08-26
      • 1970-01-01
      相关资源
      最近更新 更多