BsGridView Сортировка по полю, которого нет в моделе

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
shon
Сообщения: 29
Зарегистрирован: 2017.02.10, 14:13

BsGridView Сортировка по полю, которого нет в моделе

Сообщение shon » 2018.06.19, 10:53

Есть грид, в котором вывожу поле count

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

public function getUserActivity()
        {
            $criteria=new CDbCriteria;
            $criteria->select = array('user_email,count(*) as count');
            $criteria->condition = $this->_condition;
            $criteria->addCondition('types_id = 1');
            $criteria->group = 'user_email';
            $criteria->order = 'count desc';
            if($this->count > 0)
            {
                $criteria->having = 'count(*) >= :count';
            }

            $criteria->params = $this->_params;
            $criteria->with = $this->_with;
            $criteria->together = $this->_together;
            return new CActiveDataProvider('LogMessage', array(
                'criteria'=>$criteria,
                'pagination'=>array(
                    'pageSize'=>30,
                ),
            ));
        }

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

<?php $this->widget('bootstrap.widgets.BsGridView', array(
    'id' => 'logs-table',
    'type' => 'bordered',
    'dataProvider' => $model->getUserActivity(),
    'template' => "{summary}\n{items}\n{pager}",
    'htmlOptions' => array('class' => 'logs_table admin_table'),
    'summaryText' => Yii::app()->getModule('track')->t('Total records') . ': {count}',
    'summaryCssClass' => 'pull-right',
    'columns' => array(
        'user_email',
        'count'
    ),
)); ?>
Добавил в rules это поле и прописал свойство, но сортировка, при клике по названию колонки не работает. Вопрос, возможно ли сделать сортировку по полю, которого нет в моделе.

kukuruku
Сообщения: 1218
Зарегистрирован: 2011.02.14, 11:36

Re: BsGridView Сортировка по полю, которого нет в моделе

Сообщение kukuruku » 2018.06.19, 11:42

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

CActiveDataProvider($this, array(
    'criteria' => $criteria,
    'sort'=>array(
        'attributes'=>array(
            'SurveyDate' => array(
                'asc' => 'SurveyDate',
                'desc' => 'SurveyDate DESC',
            ),
            '*',
        ),
    ),


Ответить