Я помню, что читал что-то похожее о доктрине Symfony, но ничего не могу найти об этом в документации Zend 2.
Вот вопрос объяснил:
Допустим, в одном действии контроллера я вызываю две функции модели (обе в одной модели): обе функции выполняются абсолютно одинаково TableGateway
наборы запросов. Только эти запросы SELECT
данные. Кроме того, нет INSERT/UPDATE
операции в любом месте этого действия.
В этом случае Zend будет запускать наборы запросов дважды? Или, видя, что они дублируются и нет INSERT/UPDATE
операция выполняется в промежутке, она запускает набор запросов только один раз, а второй раз возвращает его из некоторого внутреннего кэша.
пс. На всякий случай, пожалуйста, поймите, что мне не нужны общие рекомендации по передовому опыту, а только конкретный ответ от того, кто знает глубины ядра Zend.
Нет. Было бы плохо делать это в любом случае, так как ваше приложение не знает, записало ли другое приложение в базу данных и аннулировало ли ваш кэшированный запрос.
Если у вас включен кеш запросов в моем sql, тогда запрос может быть кэширован, так как rdbms знает, могут ли эти данные быть кэшированы или были изменены.
Других решений пока нет …