【发布时间】:2017-07-10 14:45:05
【问题描述】:
我需要在 API 中为用户对实体的操作创建更改日志。
例如:
用户更新实体许可方我需要捕获更改并将它们保存在不同表的数据库中。
我能够使用 Doctrine Event Listener 完成的第一部分
class ChangelogEventListener
{
public function preUpdate($obj, PreUpdateEventArgs $eventArgs)
{
if ($obj instanceof LoggableInterface) {
dump($eventArgs->getEntityChangeSet());
}
}
}
并带有标记实体事件监听器
/**
* @ORM\EntityListeners(value={"AppBundle\EventSubscriber\Changelogger\ChangelogEventListener"})
*/
class Licensor implements LoggableInterface
但我不确定这是否可能,以及在 preUpdate 事件中访问 ORM 实体管理器是否有意义。
如果不是,那么正确的方法是什么?
我尝试过使用 Symfony 的 EventListener 而不是 Doctrine 的,但我无法访问 getEntityChangeSet()。
【问题讨论】:
标签: php symfony doctrine-orm symfony-3.2