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