しばらく前に、Doctrine のクエリ キャッシュが思ったように機能しなかったので、いくつか質問しました。
リレーションシップがキャッシュされなかった理由についての質問:
Doctrineの結果キャッシュが結合でクエリをキャッシュしない
デタッチとマージを使用してリレーションシップをキャッシュする方法に関する質問:
なぜもっと早くこれをしなかったのかはEchoSQLLogger
わかりませんが、Doctrine を有効にしたところ、エンティティを再びマージすると、各ページが 3 つのクエリを実行していることがわかりました。
私のエンティティはuser
、company
、およびprivilege
でuser
、他の 2 つの親です。最初に を取得しuser
てcompany
参加したときprivilege
は、 を実行detach
してuser
から に入れApcCache
ます。キャッシュからフェッチするとき、Doctrine のすべての魔法がそのままの状態でエンティティをmerge
返す a を実行します。user
問題は、 を呼び出すと、 、、および をmerge
照会することです。これはどのように機能するはずですか?user
company
privilege
merge
user
データベースを呼び出さずに、2 つの関係をそのままにしてエンティティをキャッシュする方法はありますか?