Tôi đang sử dụng Doctrine 2.2.2 cố gắng thực hiện truy vấn cho thực thể người dùng cùng với công ty của người dùng. Tôi muốn truy vấn này được lưu trong bộ nhớ cache vì dữ liệu bên trong sẽ không thay đổi thường xuyên, nếu có. Dưới đây là những gì tôi đã thử:Bộ nhớ cache kết quả Doctrine không lưu vào bộ nhớ cache truy vấn
$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();
Dường như, thực thể người dùng được lưu trong bộ nhớ cache nhưng vẫn thực hiện truy vấn cho công ty. Có cách nào tôi có thể lấy cả hai cùng một lúc và đặt chúng vào bộ nhớ cache kết quả?
Tôi đã tìm thấy this, nhưng nó rất cũ và giải pháp của ông không hoạt động đối với tôi.
Được đề xuất với tôi rằng tôi làm this, nhưng loại đó đánh bại mục đích của bộ nhớ cache kết quả.
i dont know giáo lý, nhưng bạn có thể cho mysql bộ nhớ cache nội bộ thử: SELECT SQL_CACHE u, c TỪ Entities \ User u LEFT JOIN u.company c ĐÂU u.id =: id – nfo
Đó không phải là hữu ích. Tôi muốn có thể sử dụng tất cả những điều thực thể của Giáo Lý. – tubaguy50035
Hãy thử thực thi tìm nạp EAGER (thay vì lười biếng). Bạn phải thêm fetch = "EAGER" vào định nghĩa quan hệ của bạn. – Cyprian