有没有办法将数据从beforeSave()传递到cakePHP中的afterSave()?

时间:2017-08-28 17:39:27

标签: php cakephp orm

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

2 个答案:

答案 0 :(得分:1)

您可以从模型的beforeSave(array $options = array())函数向您的回调afterSave(boolean $created, array $options = array())save(array $data = null, array $params = 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
}

尝试一下:)

答案 1 :(得分:0)

我还没有专门与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;
}