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

CakePHP 3 - Use saved data inside afterSave()

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

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

现在我创建了另一个插入查询来跟随编辑器的 activity 和 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) 保存的数据以在另一个查询中使用该数据?

How can I access the data saved with $this->Requests->save($request) in a beforeSave() or afterSave() statement to use the data in another query?

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

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

只需使用该实体在那里做任何您想做的事。

这段代码可能有用:

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