CGridView: сортировка суммы значений из связанной таблицы

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
ApJIeKuHo
Сообщения: 191
Зарегистрирован: 2011.09.28, 11:21

CGridView: сортировка суммы значений из связанной таблицы

Сообщение ApJIeKuHo » 2014.03.19, 16:04

Собственно есть запрос:

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

public function realSearch($page = 20)
    {
        $criteria = new CDbCriteria();

        $criteria->with = array('part_cat', 'part_sub1', 'part_sub2', 'countDemands');
        $criteria->compare('t.cat_id', $this->cat_id);
        $criteria->compare('t.status', $this->status);
        $criteria->compare('t.sub1_id', $this->sub1_id);
        $criteria->compare('t.sub2_id', $this->sub2_id);
        $criteria->compare('t.part', $this->part, true);

        return $dataProvider = new CActiveDataProvider($this, array(
            'criteria' => $criteria,
            'pagination' => array(
                'pageSize' => $page,
            ),
        ));
    }
Где countDemands - это relation:

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

'countDemands' => array(self::STAT, 'Demand', 'part_id', 'select' => 'sum(quantity)'),
Необходимо организовать сортировку по полю:

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

$this->widget('yiiwheels.widgets.grid.WhGridView', array(
    'id'=>'part-grid',
    'type' => 'striped bordered',
    'dataProvider' => $dataProvider,
    'filter'=>$model,
    'template'=>"{summary}{items}\n{pager}",
    'columns' => array(
...
        array(
            'value'=>'$data->countDemands',
        ),
...
    ),
));
Что делаю не так?
Причем судя по логам - для countDemands - делаются дополнительные запросы в таблицу на каждую строку.
Тоже не могу понять где накосячил.
Судя по:

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

...
 $criteria->with = array('part_cat', 'part_sub1', 'part_sub2', 'countDemands');
...
Все должно вызыватсья как один запрос, или нет?
Стучитесь да откроется Вам, Молитесь да услышаны будете!
P.S.: Yii Jabber Conference: yii@conference.jabber.ru

ApJIeKuHo
Сообщения: 191
Зарегистрирован: 2011.09.28, 11:21

Re: CGridView: сортировка суммы значений из связанной таблиц

Сообщение ApJIeKuHo » 2014.03.22, 22:58

Так что, никто не сможет помочь?
Стучитесь да откроется Вам, Молитесь да услышаны будете!
P.S.: Yii Jabber Conference: yii@conference.jabber.ru

lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: CGridView: сортировка суммы значений из связанной таблиц

Сообщение lancedevnull » 2014.03.22, 23:24

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

    'columns' => array(
...
        array(
            'value'=>'$data->countDemands',
        ),
...
    ), 
а можно по ... тыкнуть?

ApJIeKuHo
Сообщения: 191
Зарегистрирован: 2011.09.28, 11:21

Re: CGridView: сортировка суммы значений из связанной таблиц

Сообщение ApJIeKuHo » 2014.03.23, 10:46

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

    'columns' => array(
        array(
            'class' => 'yiiwheels.widgets.grid.WhRelationalColumn',
            'header'=>'Партномер',
            'name'=>'part',
            'url' => $this->createUrl('part/info'),
            'value'=>'$data->part',
        ),
        array(
            'header'=>'Статус',
            'name'=>'status',
            'value'=>'Part::getStatusPartNumber($data->status)',
            'filter'=>Part::getFilterStatusPartNumber(),
        ),
        array(
            'value'=>'$data->countDemands',
            //'name'=>'t.countDemands'
        ),
        array(
            'header'=>'Категория',
            'name'=>'cat_id',
            'filter'=>CHtml::listData(Cat::model()->findAll(),'cat_id','cat_ru_name'),
            'value'=>'$data->cat_id>0?$data->part_cat->cat_ru_name." (".$data->part_cat->cat_en_name.")":"NULL"',
        ),
        array(
            'header'=>'Категория 1',
            'name'=>'sub1_id',
            'filter'=>is_numeric(isset($model->cat_id)?$model->cat_id:NULL)?CHtml::listData(Sub1::model()->findAllByAttributes(array('cat_id'=>$model->cat_id)),'sub1_id','sub1_ru_name'):CHtml::listData(Sub1::model()->findAll(),'sub1_id','sub1_ru_name'),
            'value'=>'$data->sub1_id>0?$data->part_sub1->sub1_ru_name." (".$data->part_sub1->sub1_en_name.")":"NULL"',

        ),
    ),
 
Стучитесь да откроется Вам, Молитесь да услышаны будете!
P.S.: Yii Jabber Conference: yii@conference.jabber.ru

ApJIeKuHo
Сообщения: 191
Зарегистрирован: 2011.09.28, 11:21

Re: CGridView: сортировка суммы значений из связанной таблиц

Сообщение ApJIeKuHo » 2014.03.24, 09:42

Ну так что, знает кто в чем проблема? Уже мозги кипят :(
Стучитесь да откроется Вам, Молитесь да услышаны будете!
P.S.: Yii Jabber Conference: yii@conference.jabber.ru

Ответить