小编rya*_*kad的帖子

使用 EntityManagerDecorator 扩展 Doctrine EntityManager 在 UnitOfWork 中留下错误的引用

我想延长EntityManager使用的原则EntityManagerDecorator,并与参考基地遇到了问题EntityManagerUnitOfWork传递到存在prePersist通过事件$eventArgs

它看起来像EntityManager被传递到UnitOfWorkEntityManager::__construct的时候UnitOfWork被创建。

我想到了一个解决方案可能是,我可以替代默认UnitOfWorkMyEntityManagerDecorator::getUnitOfWork(),如:

public function getUnitOfWork()
{
    if ($this->unitOfWork === null) {
        $this->unitOfWork = new UnitOfWork($this);
    }

    return $this->unitOfWork;
}
Run Code Online (Sandbox Code Playgroud)

但是我注意到UnitOfWork::__construct()需要一个EntityManagernot anEntityManagerInterface所以这是行不通的。

我正在寻找如何MyEntityManagerDecorator从 prePersist$eventArgs->getEntityManager()而不是 base 中获取EntityManager。我想这样做,而不直接继承EntityManager。文档还说“您永远不应该尝试从 EntityManager 继承:继承不是 EntityManager 的有效扩展点。” .

我不确定您需要什么代码示例(如果有),所以如果您需要更多信息,请告诉我。我可以MyEntityManagerDecorator按预期访问项目中的其他任何地方(到目前为止我已经尝试过)。我yml像这样设置装饰器:

my_multi_tenant_entity_manager:
    public: false …
Run Code Online (Sandbox Code Playgroud)

php entitymanager symfony doctrine-orm

6
推荐指数
1
解决办法
2825
查看次数

标签 统计

doctrine-orm ×1

entitymanager ×1

php ×1

symfony ×1