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