如何对具有HAS_MANY关系的cgridview列进行排序?

时间:2013-01-14 07:39:23

标签: sorting yii cgridview

我需要在yii(CGridView)中对具有HAS_MANY关系的列进行排序。任何人都可以帮助我。

这是我的CGRIDVIEW专栏:

 array(
     'name' => 'emp_cat_id',
     'type' => 'Raw',
     'value' => '$data->getProjectContactClasses($data)',
     'htmlOptions' => array('width' => '350'),
),

这是我在模型中获取ProjectContactClasses的函数

public function getProjectContactClasses($model)
    {      
        $classes = "";
        if (!empty($model->emp_cat_id))
        {
            $criteria = new CDbCriteria();
            $criteria->addInCondition("id", array($model->emp_cat_id));
            $model = LaborClassification::model()->findAll($criteria);

            if (count($model) > 0)
            {
                foreach ($model as $row)
                {
                    $classes .= $row->classification . ", ";
                }
                $classes = substr($classes, 0, -2);
            }
        }
        return $classes;
    }

这是关系

'project_contacts' => array(self::HAS_MANY, 'ProjectContact', 'project_id'),

如果有人需要更多解释,请告诉我。

1 个答案:

答案 0 :(得分:2)

return new CActiveDataProvider($this, array(
        'criteria' => $criteria,
        'sort'=>array(
            'attributes'=>array(
                'emp_cat_id.labor_lassification'=>array(
                    'asc'=>'emp_cat_id.labor_lassification',
                    'desc'=>'emp_cat_id.labor_lassification DESC',
                ),
                '*',
            ),
        ),
    ));