1

Doctrine\ORM\Configuration#setHydrationCacheImpl() Doctrine2 の新しいバージョンでは、MemcacheCache などを渡す必要があることを知っています。

しかし、それをコンテナで行うにはどうすればよいでしょうか?

「default」と「other」という名前の2つのentity_managerを使用しています。

最初に 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

https://github.com/doctrine/doctrine2/blob/2.2.2/tests/Doctrine/Tests/ORM/Functional/HydrationCacheTest.php?source=c

他の単純なサービスの場合、次のように定義全体を上書きすることで、呼び出すメソッドを簡単に追加できます。

service1:
    ...
    calls:
        [method calls]

しかし、entity_manager については、それらにメソッド呼び出しを追加する方法がわかりません。

つまり、私の質問は、セマンティック構成を使用せずに低レベルで orm を構成する方法ですか?

4

2 に答える 2