@frmax
человек

Как сделать связную мульти сортировку в ActiveDataProvider?

Добрый день,

не выходит сортировка по доптаблице в ActiveDataProvider
$query = User::find()
->leftJoin(Table::tableName().' p','user.id = p.user_id');
        $this->processPageRequest('page');
        $provider = new ActiveDataProvider([
            'query' => $query,
            'pagination' => [
                'pageSize' => 3,
                'page' =>\Yii::$app->request->get('page'),
            ],
        ]);

        $provider->setSort([
            'defaultOrder' => [],
            'attributes' => [
                'table.xx1' => \Yii::$app->request->post('xx1') == 3 ? SORT_ASC: SORT_DESC,
                'table.xx2' => \Yii::$app->request->post('xx2') == 3 ? SORT_ASC: SORT_DESC,
                'table.xx3' => \Yii::$app->request->post('xx3') == 3 ? SORT_ASC: SORT_DESC,
            ]
        ]);


вот мои поппытки) что-то не пойму как и где прописать чтоб работало
  • Вопрос задан
  • 174 просмотра
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
А где join?
with - это жадная загрузка. Загрузка связи hasMany одним запросов. И он происходит после основного запроса.
Вам нужно добавить joinWith www.yiiframework.com/doc-2.0/guide-db-active-recor...
Далее:
$dataProvider->sort->attributes['xx1'] = [
        'asc' => ['table.xx1' => SORT_ASC],
        'desc' => ['table.xx1' => SORT_DESC],
    ];

Смотреть тут: www.yiiframework.com/wiki/653/displaying-sorting-a...
Ответ написан
Ваш ответ на вопрос

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

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