Yii2: Как сделать зависимость кэширования от значения переменной?

Поясню вопрос. Хочу сделать кэширование новостей в зависимости от их количества. о тут проблема в том, что если делать через
$dependency = new \yii\caching\DbDependency(['sql' => "SELECT COUNT(*) FROM news"]);

и так же у меня выше для пейджера считается количество
$query = News::find();
$countQuery = $query->count();

То есть у меня выходит два запроса в одном месте, практически, на подсчёт количества новостей. Хотелось бы от этого избавиться и в зависимость передать $countQuery. Как это можно сделать?
  • Вопрос задан
  • 1248 просмотров
Пригласить эксперта
Ответы на вопрос 2
EnChikiben
@EnChikiben
$query = News::find();
$countQuery = $query->count();

$data = Yii::$app->cache->getOrSet('newsCacheKey', function () use ($query) {
   return $query->all();
}, $this->cacheDuration, new TagDependency([
   'tags' => [
      News::className() . $countQuery
   ]
]));
Ответ написан
/yiisoft/yii2/caching/TagDependency.php
Посмотрите, может это подойдет
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы