私はDoctrine 2.2.2を使用して、ユーザーの企業と一緒にユーザーエンティティのクエリを実行しようとしています。内部のデータは頻繁には変更されないため、このクエリをキャッシュする必要があります。Doctrineの結果キャッシュが結合を伴うクエリをキャッシュしない
$user = $em->createQuery('
SELECT u, c
FROM Entities\User u
LEFT JOIN u.company c
WHERE u.id = :id
')->setParameter('id', $identity)->useResultCache(true, 21600, 'user_' . $identity)->getResult();
一見、ユーザエンティティがキャッシュされているが、それはまだ会社のためのクエリを行います。以下は、私が試したものです。同時に両方をフェッチして結果キャッシュに入れる方法はありますか?
私はthisを見つけましたが、それは非常に古く、彼のソリューションは私のためには機能しませんでした。
私にはthisを実行することが提案されましたが、そのような種類のキャッシュは結果キャッシュの目的を破ります。
私は教義を知らないが、あなたは、MySQL内部キャッシュを試してみることができます。id – nfo
便利ではありません。SQL_CACHE Uを選択して、 Cエンティティ\ユーザーからのuが LEFT u.id = u.company C を登録しよう。 Doctrineエンティティのすべてのものを使用できるようにしたい。 – tubaguy50035
EAGERフェッチを(レイジーの代わりに)強制してみてください。リレーション定義にfetch = "EAGER"を追加する必要があります。 – Cyprian