创建一个事件监听器来更新另一个数据库表

用户名

这是我的第一个问题,请耐心等待。

使用Sonata在订单表中创建或更新订单时,如何实现postPersist事件监听器来更新日志表。

我了解如何在创建新订单后立即使用prePersist将信息添加到同一数据库表中。(请参见以下代码段)

public function prePersist(LifecycleEventArgs $args)
{
    $order = $args->getEntity();

    if ($order instanceof PmodOrder) {
        $user = $this->serviceContainer->get('security.token_storage')->getToken()->getUser();

        if ($user) {
            $order->setCreatedBy($user);
            $order->setCreatedAt(new \DateTime(date('Y-m-d H:i:s')));
        }
    }
}

但是我不完全了解在更新另一个表时将如何执行此操作,因为它不是同一实体。

创建订单后,(我认为)postPersist应该使用该订单的ID和一些其他信息来更新另一个表。

我认为这样的界线之间;

public function postPersist(LifecycleEventArgs $args)
{
    $log = $args->getEntity();

    if ($log instanceof PmodLog) {
        $order = ....;
        $user = $this->serviceContainer->get('security.token_storage')->getToken()->getUser();
        $department = $this->serviceContainer->get('security.token_storage')->getToken()->getUser()->getDepartment();

        if ($order) {
            $log->setOrder($order);
            $log->setCreatedBy($user);
            $log->setCreatedAt(new \DateTime(date('Y-m-d H:i:s')));
            $log->setDepartment($department);
            $log->setAction("created");
        }
    }
}

我不知道如何获取当前正在处理的订单。以及当用户修改订单时,setAction将会如何。例如“已编辑”或“已批准”。除非我想念任何东西,否则我一直走过索纳塔(Sonata)的文档,没有运气。

记住我使用了Sonata,否则在我自己的Controller Actions中很容易实现。

你懂得。

您可以将添加到您的实体的侦听器直接添加到您的实体中,该侦听器可以创建/更新订单的日志。

首先,您创建侦听器类:

use Doctrine\ORM\Event\LifecycleEventArgs;

class OrderListener
{

    public function postPersist(Order $order, LifecycleEventArgs $event)
    {
        // for example
        // if you want to store the date creation :
        if($order->getId() == null)
        {
            $order->setDateCreate(new \DateTime('now'));
        }
        // if you want to store the last update date :
        $order->setDateUpdate(new \DateTime('now'));

        //... or whatever you want to store...
    }
}

然后将其注册在service.yml中:

order_listener:
    class: YOUR\NAMESPACE\OrderListener
    tags:
        - { name: doctrine.orm.entity_listener }

最后,将您的实体链接到侦听器(此处带有批注):

/**
 * @ORM\EntityListener("YOUR\NAMESPACE\OrderListener")
 */
class Order
{

    ...

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建一个事件监听器来更新另一个数据库表

来自分类Dev

SQL更新表使用另一个数据库中的表

来自分类Dev

如何使用另一个数据库表中的值更新表

来自分类Dev

如何将表从一个数据库更新到另一个?

来自分类Dev

从一个数据库表插入到另一个

来自分类Dev

从一个数据库表插入到另一个

来自分类Dev

从tmp数据库中的表插入并更新到另一个数据库中的表

来自分类Dev

从tmp数据库中的表插入并更新到另一个数据库中的表

来自分类Dev

如何基于一个表与另一个数据库中的同一表更新数据库中的表记录?

来自分类Dev

如何从当前数据库CodeIgniter中的另一个数据库创建新表

来自分类Dev

创建一个触发器来更新另一个表的列

来自分类Dev

从另一个数据库更新SQL Server数据库

来自分类Dev

如何将一个事件监听器应用于另一个事件监听器?

来自分类Dev

将数据从一个表复制到另一个数据库中的另一个表

来自分类Dev

在另一个数据库中重新创建表时,将数据插入/更新到表中

来自分类Dev

使用某些参数从另一个数据库更新SQL表,而仅更新某些参数

来自分类Dev

如何创建一个新表来汇总另一个数据框中的数据?

来自分类Dev

从同一服务器访问另一个数据库?

来自分类Dev

将一个数据库表中的行插入另一个数据库中的两个不同表中

来自分类Dev

MySQL从另一个数据库更新数据

来自分类Dev

Laravel:从另一个数据库表中获取数据

来自分类Dev

如何使用postgres dblink对另一个数据库中的表进行更新?

来自分类Dev

将数据库中一个表的值插入到另一个数据库中的另一表

来自分类Dev

Oracle数据库,将数据从一个表更新到另一个表

来自分类Dev

在另一个数据库中创建一个文档并设置字段值

来自分类Dev

从一个数据库更新到另一个SQL Server 2012

来自分类Dev

如何生成一个模型,其表存储在另一个数据库中?

来自分类Dev

如何比较一个数据库表的列与另一个的相似度

来自分类Dev

在表列和另一个数据库之间创建关系

Related 相关文章

  1. 1

    创建一个事件监听器来更新另一个数据库表

  2. 2

    SQL更新表使用另一个数据库中的表

  3. 3

    如何使用另一个数据库表中的值更新表

  4. 4

    如何将表从一个数据库更新到另一个?

  5. 5

    从一个数据库表插入到另一个

  6. 6

    从一个数据库表插入到另一个

  7. 7

    从tmp数据库中的表插入并更新到另一个数据库中的表

  8. 8

    从tmp数据库中的表插入并更新到另一个数据库中的表

  9. 9

    如何基于一个表与另一个数据库中的同一表更新数据库中的表记录?

  10. 10

    如何从当前数据库CodeIgniter中的另一个数据库创建新表

  11. 11

    创建一个触发器来更新另一个表的列

  12. 12

    从另一个数据库更新SQL Server数据库

  13. 13

    如何将一个事件监听器应用于另一个事件监听器?

  14. 14

    将数据从一个表复制到另一个数据库中的另一个表

  15. 15

    在另一个数据库中重新创建表时,将数据插入/更新到表中

  16. 16

    使用某些参数从另一个数据库更新SQL表,而仅更新某些参数

  17. 17

    如何创建一个新表来汇总另一个数据框中的数据?

  18. 18

    从同一服务器访问另一个数据库?

  19. 19

    将一个数据库表中的行插入另一个数据库中的两个不同表中

  20. 20

    MySQL从另一个数据库更新数据

  21. 21

    Laravel:从另一个数据库表中获取数据

  22. 22

    如何使用postgres dblink对另一个数据库中的表进行更新?

  23. 23

    将数据库中一个表的值插入到另一个数据库中的另一表

  24. 24

    Oracle数据库,将数据从一个表更新到另一个表

  25. 25

    在另一个数据库中创建一个文档并设置字段值

  26. 26

    从一个数据库更新到另一个SQL Server 2012

  27. 27

    如何生成一个模型,其表存储在另一个数据库中?

  28. 28

    如何比较一个数据库表的列与另一个的相似度

  29. 29

    在表列和另一个数据库之间创建关系

热门标签

归档