/** * Список городов для выбора * @return array|\yii\db\ActiveRecord[] */ public static function getAllCities() { $query = Review::find()->distinct()->joinWith('cities')->select('city.*')->where(['IS NOT', 'city.id', null])->orderBy('city.name')->asArray(); if (!Yii::$app->user->isGuest) { return $query->all(); } else { return Yii::$app->db->cache(function ($db) use($query) { return $query->all(); }, Yii::$app->params['dbCacheValidTime']); } }
/** * Список отзывов * @param null $id_author * @return string */ public function actionIndex($id_author = null) { $city = null; $author = null; $dataProvider = null; $isValidSession = $this->isValidSession(); if ($isValidSession) { if (isset($id_author)) { $query = Review::find()->byAuthor($id_author); $author = User::getById($id_author); } else { $city = Yii::$app->session->get('city'); $query = Review::find()->byCity(City::getIdCityByName($city)); } $dataProvider = new ActiveDataProvider(['query' => $query->orderBy('created_at DESC'), 'pagination' => ['pageSize' => 10]]); } return $this->render('index', ['dataProvider' => $dataProvider, 'author' => $author, 'city' => $city, 'isValidSession' => $isValidSession]); }