Używam Doctrine 2.2.2, próbując wykonać zapytanie dla użytkownika wraz z firmą użytkownika. Chcę, aby to zapytanie było buforowane, ponieważ dane wewnątrz nie będą się często zmieniać, jeśli w ogóle. Poniżej jest to, co próbowałem:Pamięć podręczna wyników Doctrine nie buforuje zapytania z łączeniem
$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();
Pozornie, jednostka użytkownika jest buforowane, ale nadal robi kwerendę dla firmy. Czy istnieje sposób, w jaki mogę pobrać oba jednocześnie i umieścić je w pamięci podręcznej wyników?
Znalazłem this, ale jest bardzo stary i jego rozwiązanie nie działa dla mnie.
Zasugerowano mi, że robię this, ale tego rodzaju pokonuje cel pamięci podręcznej wyników.
nie wiem doktryny, ale można dać MySQL buforuje wewnętrzny spróbować: Wybierz SQL_CACHE u, c od podmiotów \ użytkownik u LEFT JOIN u.company c GDZIE u.id =: id – nfo
To nie jest pomocne. Chcę móc korzystać ze wszystkich elementów encji Doktryny. – tubaguy50035
Spróbuj wymusić pobieranie EAGER (zamiast leniwego). Musisz dodać fetch = "EAGER" do definicji relacji. – Cyprian