Можете предварительно настроить кеширование в Symfony для Doctrine:
framework:
cache:
pools:
doctrine.result_cache_pool:
adapter: cache.app
services:
doctrine.result_cache_provider:
class: Symfony\Component\Cache\DoctrineProvider
public: false
arguments:
- '@doctrine.result_cache_pool'
doctrine:
orm:
result_cache_driver:
type: service
id: doctrine.result_cache_provider
По умолчанию Symfony использует файловое кеширование для пользовательских данных, поэтому результаты запроса Doctrine также будут хранится в файле. Однако если, например используете Redis, то можно его указать в качестве хранилища кешей по умолчанию:
framework:
cache:
# Redis
app: cache.adapter.redis
default_redis_provider: '%env(REDIS_URL)%'
Далее в нужных запросах просто указывайте Doctrine-е, что результат запроса надо кешировать:
...
->getQuery()
->useResultCache(true) // кешировать результат данного запроса
//->setResultCacheLifetime(3600) // время жизни кеша при необходимости
->getResult()