Как организовать првильное кеширование сущностей в Doctrine 2?

Всем привет.

Когда я получаю сущность из кеша, я делаю
$entityManager->merge($entity)
Но при этом doctrine совершает запрос к базе данных для получения "managed" сущности и слияния ее с "закешированной".

Мне не нужно изменять эту сущность, я хочу просто получать ее ассоциации используя
$entity->getChildren()
Если я не делаю merge, то getChildren ничего не возвращает. А если делаю, то имею лишний запрос к БД, от которого и собирался избавиться.

Есть ли возможность сделать что-то типа attach для перевода сущности в состояние managed, но без запроса к БД?

P.S. Ипользовать fetch="EAGER" для ассоциаций не вариант, так как их нет смысла хранить в кеше, они нужны всегда в актуальном состоянии.
  • Вопрос задан
  • 2713 просмотров
Пригласить эксперта
Ответы на вопрос 1
@myLizzarD
PHP developer
К сожалению запросы будут производится всегда, так устроена doctrine, ей необходимо сделать дозапрос сущности, чтобы знать о ее отношениях с другими сущностям. Как она может вернуть вам children-ов, если не знает, есть они у этой сущности или нет?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы