在较新版本的 Doctrine2 中,我知道有Doctrine\ORM\Configuration#setHydrationCacheImpl()
MemcacheCache 等要通过。
但是如何在容器中完成呢?
我正在使用两个 entity_manager:名为“default”和“other”。
我首先尝试将 hydration_cache 定义为 config.yml
doctrine:
orm:
default_entity_manager: default
...
entity_managers:
default:
...
metadata_cache_driver:
type: service
id: memcache_driver
...
hydration_cache_driver:
type: service
id: memcache_driver
...
other:
...
注意:哪里memcache_driver
由我定义,instanceofDoctrine\Common\Cache\MemcacheCache
然后我得到了Unrecognized options "hydration_cache_driver" under "doctrine.orm.entity_managers.default"
。
我还尝试直接在 AppKernel#buildContainer 中调整容器,但没有将 \Doctrine\ORM\Configuration 实例定义为服务,因此我无法检索 Configuration 实例。
欢迎任何建议。
编辑:
我确信从 Doctrine 2.2.2 开始重新实现了缓存水合对象的功能。
http://www.doctrine-project.org/jira/browse/DDC-1766
对于其他简单的服务,我可以通过覆盖整个定义来轻松添加要调用的方法,例如
service1:
...
calls:
[method calls]
但是对于 entity_manager,我不确定如何向它们添加方法调用。
所以我的问题换句话说,如何在不使用语义配置的情况下在较低级别配置 orm?