Сортировка в GridView по полю из другой коллекции

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
long399
Сообщения: 96
Зарегистрирован: 2019.08.13, 08:03
Откуда: г. Новосибирск

Сортировка в GridView по полю из другой коллекции

Сообщение long399 »

Здравствуйте. Имеется проект, где данные хранятся в mongodb.

Классы для работы с коллекциями я наследую от \yii\mongodb\ActiveRecord.

Имеется коллекция record, хранящая архивные дела.
На странице архивных дел вывожу данные, часть которых берется из других коллекций. Например у архивного дела есть атрибут register_id - это ObjectId реестра описей (коллекция register), к которому принадлежит данное дело. Вывожу в таблицу я название реестра.

Код: Выделить всё

...
'columns' => [
    ['class' => 'yii\grid\SerialColumn'],

    [
        'attribute' => 'register_id',
        'label' => 'Реестр описей',
        'value' => function($model) {
            return $model->getRegister()->name;
        },
        'filter' => Html::activeDropDownList(
            $searchModel,
            'register_id',
            Register::getListOfRegisters(),
            ['prompt' => 'Не выбран', 'class' => 'form-control form-control-sm']
        )
    ],
...
Обычно, при работе с mysql (\yii\db\ActiveRecord) я делал join в searchModel со связанной таблицей и мне удавалось таким образом задать сортировку через $dataProvider->setSort().

Однако метод find() у \yii\mongodb\ActiveRecord возвращает объект \yii\mongodb\ActiveQuery, в котором нет возможности сделать join, там отсутствуют данные методы.

Если кто-то знает как можно сделать сортировку, подскажите, пожалуйста.
Ответить