如何在CakePHP 3.1.13中实现afterSave的完整过程

时间:2017-04-20 10:15:36

标签: cakephp

当我保存数据时,保存的数据但在afterSave功能之后无法正常工作。 如何运作,任何人都能详细解释一下吗?

在控制器中,

$Product = $this->Products->newEntity();
$this->Products->save($ProductsEntity, array('callbacks'=>false));

在模型中,

public function afterSave(Event $event, EntityInterface $entity, ArrayObject $options)
{
  ...Function not called
}

但它不起作用...... !!

2 个答案:

答案 0 :(得分:3)

确保将afterSave方法添加到Table课程,而不是Entity课程。

此外,$ProductsEntity来自哪里,array('callbacks'=>false)是什么?没有这样的选择,如果有它可能会与你想要的完全相反。

请参阅此处的可用选项:
https://api.cakephp.org/3.1/class-Cake.ORM.Table.html#_save

还要注意这一个:

  

如果在保存实体时没有对实体进行任何更改,则回调   不会开火,因为没有进行保存。

希望这有帮助。

答案 1 :(得分:1)

afterSave事件正常工作后,您只需创建afterSave的函数并包含(使用)相关类,

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

并加入EventEntityInterfaceArrayObject classe,

以下是文档:https://book.cakephp.org/3.0/en/orm/table-objects.html#aftersave,请仔细检查并实施。