@evgeniy_matveev

Как организовать сортировку в ActiveRecord?

Здравствуйте. В проекте есть вот такой вот экшн.

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
        ]);
    }

В тоже время есть необходимость реализовать сортировку. Подскажите, пожалуйста, как сортировать записи без использования повторного запроса к БД. Сортировка в имеющейся выборке.
Либо подскажите механизм, который позволяет используя запрос на поиск в БД "приклеить" сортировку. Как-то так. Спасибо.
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
@Arik
Сортировка, но лучше из всей этой кишки сделать нормальный Провайдер данных
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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