【问题标题】:Capturing Pre-execute Event in Symfony/Doctrine DBAL在 Symfony/Doctrine DBAL 中捕获预执行事件
【发布时间】:2015-10-14 08:59:22
【问题描述】:

我正在寻找一种在查询从 Doctrine/Symfony 发送到 Postgres 之前插入和修改/包装查询的方法。我一直在查看 Symfony 和 Doctrine 的标准事件(herehere 是我发现的),但似乎没有任何通用的“执行查询之前”事件。

这是一个失败的原因/甚至可能吗?

谢谢

【问题讨论】:

  • 你的意思是如果你在控制器/服务/等中执行$class->setName('abc');,然后在持久化到数据库之前,你想做类似if (whatever whatever) { $class->setName('new value' );` } 并坚持?我理解对了吗?
  • 不,我不想要对象生命周期事件触发器,我想在查询进入数据库之前对其进行标记。

标签: php postgresql symfony doctrine-orm doctrine


【解决方案1】:

您是否在配置连接时尝试使用 wrapper_class 参数来使用包装器类?

See here for more info about Doctrine DBAL's configuration

基本上,它允许您实现自定义Connection 类。您可以做的是创建一个自定义的 Connection 类继承自原始类 (\Doctrine\DBAL\Connection) 并覆盖 executeQuery()方法。在那里,您可以使用自己的事件管理实现来引发事件或使用内置的 EventManager

【讨论】:

    猜你喜欢
    • 2018-12-18
    • 2015-09-13
    • 2017-06-13
    • 1970-01-01
    • 2020-07-29
    • 2016-04-16
    • 2021-12-07
    • 2015-07-06
    • 2015-05-07
    相关资源
    最近更新 更多