public function search($params) { // USER ID $userId = Yii::$app->user->id; // FAVORITES ANNOUNCEMENTS IDS $rows = FavoritesModel::find()->select(['announcement_id'])->andFilterWhere(['user_id' => $userId])->asArray()->all(); if (!count($rows)) { return; } $favoritesIds = []; foreach ($rows as $row) { $favoritesIds[] = $row['announcement_id']; } // BASE QUERY $query = AutoBaseQuery::queryLongBlockFull(); $query->andFilterWhere(['in', 'announcement.id', $favoritesIds]); // SORT if (isset($params['sort'])) { switch ($params['sort']) { case 'created_asc': $query->orderBy("announcement.id DESC"); break; case 'price_cheap': $query->orderBy("announcement.price ASC"); break; case 'price_expensive': $query->orderBy("announcement.price DESC"); break; default: $query->orderBy("announcement.id DESC"); break; } } else { $query->orderBy("announcement.id DESC"); } // PER PAGE $perPage = Yii::$app->params['catalogSettings']['defaultPageSize']; if (isset($params['pp']) && in_array($params['pp'], Yii::$app->params['catalogSettings']['pageSize'])) { $perPage = $params['pp']; } // DATA PROVIDER $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => $perPage, 'pageSizeParam' => 'pp']]); return $dataProvider; }
public function search($params) { // USER ID $userId = Yii::$app->user->id; // BASE QUERY $query = AutoBaseQuery::queryLongBlockFull(); $query->andFilterWhere(['announcement.user_id' => $userId]); $query->andWhere(['in', 'announcement.status', [Announcement::STATUS_ENABLED, Announcement::STATUS_SALES]]); // SORT if (isset($params['sort'])) { switch ($params['sort']) { case 'created_asc': $query->orderBy("announcement.id DESC"); break; case 'price_cheap': $query->orderBy("announcement.price ASC"); break; case 'price_expensive': $query->orderBy("announcement.price DESC"); break; default: $query->orderBy("announcement.id DESC"); break; } } else { $query->orderBy("announcement.id DESC"); } // PER PAGE $perPage = Yii::$app->params['catalogSettings']['defaultPageSize']; if (isset($params['pp']) && in_array($params['pp'], Yii::$app->params['catalogSettings']['pageSize'])) { $perPage = $params['pp']; } // DATA PROVIDER $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => $perPage, 'pageSizeParam' => 'pp']]); return $dataProvider; }