CakePHP 3 - 使用afterSave()中保存的数据

时间:2016-01-27 12:41:12

标签: php cakephp cakephp-3.0 before-save after-save

我已在视图中提交了一份表格,该表格将在控制器中处理。通常发生的是控制器通过这样做保存编辑:

if ($this->Requests->save($request)) {
    // the request have been saved.
}

现在我创建了另一个插入查询,以跟随编辑器的活动和afterSave()语句,如下所示:

public function afterSave()
{
    // here I need the data submitted from $this->request->save($request));
    // how can I do this to use the data in the query?

    // insert query here.
}

我想使用afterSave(),因为我想将它用于对请求所做的所有更改,但我似乎无法找到访问已发布数据的方法。

The documentation表示afterSave()包含以下参数:

afterSave(Event $event, EntityInterface $entity, ArrayObject $options)

我需要这些来完成我想要的吗?如果是这样,我该如何正确使用它们?因为我似乎无法获得任何调试信息以查看它包含保存操作的内容。

问题如下:

如何在beforeSave()或afterSave()语句中访问使用$this->Requests->save($request)保存的数据以在另一个查询中使用该数据?

2 个答案:

答案 0 :(得分:4)

  

如何在beforeSave()或afterSave()语句中访问使用$ this-> Requests-> save($ request)保存的数据,以便在另一个查询中使用该数据?

两个回调的第二个算法是实体数据。除非您需要整个请求,否则您可以将编组所转换的所有数据从第二个arg $entity获取到实体中。查看方法文档:

我不知道你的问题是什么,但是debug($entity);会显示实体数据。如果您的代码中没有其他错误。

只需使用实体做任何你想做的事。

答案 1 :(得分:0)

此代码段可能会有用:

use Cake\Event\Event;
public function afterSave(Event $event)
{
    $entity = $event->getData('entity');
   if(!empty($entity)){
       // your submission code here
   }
}