我正在使用Doctrine 2.2.2試圖爲用戶實體和用戶公司一起查詢。我希望這個查詢被緩存,因爲裏面的數據不會經常變化,如果有的話。以下是我所嘗試的:學說結果緩存沒有緩存加入查詢
$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的內部緩存中的嘗試:SELECT SQL_CACHE U,C 從實體\用戶U LEFT JOIN u.companyç WHERE u.id =:ID – nfo
這是無益的。我希望能夠使用所有的學說實體的東西。 – tubaguy50035
嘗試強制EAGER抓取(而不是懶惰)。您必須將fetch =「EAGER」添加到關係定義中。 – Cyprian