在yii的视图中排序关系表

时间:2014-06-26 11:12:28

标签: yii

我正在尝试在cListView中进行排序..对于我来说,使用来自同一个表的排序属性非常好。我想知道它是否可以根据相关表中的字段进行排序。 例如......

<?php $this->widget('zii.widgets.CListView', array(
        'dataProvider'=>$dataProvider,
        'itemView'=>'_viewnew',
        'sortableAttributes'=>array(
        'Code'

                ),
)); ?>

工作正常.. 但我想从另一个像这样的表格字段中排序..

<?php $this->widget('zii.widgets.CListView', array(
        'dataProvider'=>$dataProvider,
        'itemView'=>'_viewnew',
        'sortableAttributes'=>array(
        'relation_name.Make'

                ),
)); ?>

这是我到目前为止所拥有的!!并且不起作用

在我的模特中

/**
     * @return array relational rules.
     */
    public function relations()
    {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
            'PMake'=>array(self::BELONGS_TO, 'PMake', 'ID'),
        );
    }

在我的控制器中

public function actionIndex()
    {
        $dataProvider=new CActiveDataProvider('table1');
        $criteria=new CDbCriteria;
        $criteria->together=true;
        $criteria->with=array('PMake');
        $dataProvider->criteria=$criteria;
        $dataProvider->sort->defaultOrder='PMake.Make ASC';

        $this->render('index',array(
            'dataProvider'=>$dataProvider,
        ));
    }

在我看来,这就是我想要开始工作的方式。

<?php 
            $this->widget('zii.widgets.CListView', array(
                'dataProvider'=>$dataProvider,
                'itemView'=>'_view',
                'sortableAttributes' => array('PMake.Make'=>'Make'),
                'loadingCssClass' => '', //remove loading icon
            )); 
        ?>

1 个答案:

答案 0 :(得分:0)

在控制器中试试这个

 public function actionIndex()
        {
            $dataProvider=new CActiveDataProvider('table1');
            $criteria=new CDbCriteria;
            $criteria->together=true;
            $criteria->with=array('PMake');
            //Made changes here
            $criteria->order = 'PMake.Make ASC'
            $dataProvider->criteria=$criteria;

            $this->render('index',array(
                'dataProvider'=>$dataProvider,
            ));
        }