gpt4 book ai didi

configuration - 有没有办法在 Symfony2 中指定 Doctrine2 Entitymanager 实现类?

转载 作者:行者123 更新时间:2023-12-04 13:02:01 29 4
gpt4 key购买 nike

我目前正在使用 Symfony2 和 Doctrine2,但我必须覆盖 Doctrine2 EntityManager 并为其添加一些“取消删除”功能(内部的 ACL)。

所以我想知道:有没有办法覆盖 EntityManager 类并在 Symfony2 中指定 Doctrine2 以将其用作 EntityManager 的实现?

感谢您的任何帮助!

最佳答案

在 Doctrine 2.4 ( Doctrine 2.4 release ) 之后,您需要为此使用装饰器。不要直接扩展 EntityManager。
首先,您需要实现自己的实体管理器装饰器,它扩展了 Doctrine\ORM\Decorator\EntityManagerDecorator(如@Dana)
但是你不能只是改变 Doctic.orm.entity_manager.class 到你的新装饰器,因为 EntityManagerDecorator 在它的构造函数中需要 EntityManagerInterface :

public function __construct(EntityManagerInterface $wrapped)

您不能在此处仅将doctrine.orm.entity_manager 作为参数传递,因为这将是递归。
不要这样做:
return new self(\Doctrine\ORM\EntityManager::create(

您需要的是在装饰器之类的服务中配置装饰器:
yourcompany_entity_manager:
public: false
class: YourCompany\ORM\EntityManagerDecorator
decorates: doctrine.orm.default_entity_manager
arguments: ["@yourcompany_entity_manager.inner"]

现在,您将拥有装饰器作为 Doctrine 的默认实体管理器。 @yourcompany_entity_manager.inner 实际上是一个链接到 dotric.orm.default_entity_manager ,它将被传递给 yourcompany_entity_manager 构造函数。

用于配置装饰器的 Symfony 文档: link

顺便说一句,此命令对于调试服务非常有用:

app/console container:debug | grep entity_manager

关于configuration - 有没有办法在 Symfony2 中指定 Doctrine2 Entitymanager 实现类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138962/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com