Здравствуйте. В проекте есть вот такой вот экшн.
public function actionIndex(){
$pageSize =Yii::$app->request->get('pagesize');
$users = User::find()->all();
$query = Projects::find()->where(['status'=>'0'])->with(['materials','design','installing','building']);
$countQuery = clone $query;
$pages = new Pagination(['totalCount'=>$countQuery->count(),'pageSize'=>$pageSize,'forcePageParam'=>false,'pageSizeParam'=>false,'defaultPageSize'=>10]);
$status = $query->offset($pages->offset)
->limit($pages->limit)
->all();
return $this->render('index', [
'status' => $status,
'pages'=>$pages,
'users'=>$users
]);
}
Поиск по странице организован следующим образом:
public function actionSearch(){
$users = User::find()->all();
$search = Yii::$app->request->get('search');
$query = Projects::find()
->Where(['projects.status'=>0])
->joinWith('materials')
->andWhere([
'or',
['like','materials.number',$search],
['like','materials.description',$search],
['like','projects.number',$search]
])
->with(['materials','design','installing','building']);
$countQuery = clone $query;
$pages = new Pagination(['totalCount'=>$countQuery->count(),'pageSize'=>20,'forcePageParam'=>false,'pageSizeParam'=>false]);
$status = $query->offset($pages->offset)
->limit($pages->limit)
->all();
return $this->render('index', [
'status' => $status,
'pages'=>$pages,
'users'=>$users,
'search'=>$search
]);
}
В тоже время есть необходимость реализовать сортировку. Подскажите, пожалуйста, как сортировать записи без использования повторного запроса к БД. Сортировка в имеющейся выборке.
Либо подскажите механизм, который позволяет используя запрос на поиск в БД "приклеить" сортировку. Как-то так. Спасибо.