Задать вопрос

Как сохранить запросы к бд в кэш в Yii2?

Добрый вечер. Как правильно сохранять кэш в фреймворке? Есть куча тем, знаю, и примеров, но они не внятны и не работают, по крайней мере у меня, видимо что то не так делаю.

Есть ForecastController и в нем метод

protected function cacheGet($keyCache, $dbData){
        $cache = \Yii::$app->cache;
        $data = $cache->get($keyCache);
        if ($data !== $dbData) {
            $data = $dbData;
            $cache->set($keyCache, $data);
        }
        return $data;
    }



в экшене я его вызываю

public function actionIndex(){
        $articlesNew = $this->cacheGet('articlesNewIndex', ForecastArticle::find()->asArray()->orderBy('id desc')->limit(4)->all());
        $articles = $this->cacheGet('articlesIndex', ForecastArticle::find()->asArray()->orderBy('id desc')->limit(10)->with('comments')->all());

        $countComment = $this->foreachCommentCountIsArticle($articles);

        return $this->render('index',
            compact(
                'articlesNew',
                'articles',
                'countComment'
            )
        );
    }



Все хорошо сохраняется в кэш, вопросов нет. Но запросы к бд все равно остаются..... Что я делаю не так?
Я уж думаю, может во время добавления статьи из админки сохранять в кэш и дергать только кэш на фронте.
  • Вопрос задан
  • 186 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
$result = Customer::getDb()->cache(function ($db) {
    return Customer::find()->where(['id' => 1])->one();
});

https://www.yiiframework.com/doc/guide/2.0/ru/cach...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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