zoukankan      html  css  js  c++  java
  • Yii CGridView 之 SQL 语句

    在CGridView里,有时候需要用到复杂的查询时,可用 CSqlDataProvider替换CActiveDataProvider,

    CSqlDataProvider 可用复杂的查询语句,例子如下:

    1.在控制器中:

        public function actionIndex()
        {
            $count = Yii::app()->db->createCommand('SELECT COUNT(*) FROM app_item')->queryScalar();
            $sql = 'SELECT * FROM app_item';
            $dataProvider = new CSqlDataProvider($sql, array(
                'totalItemCount' => $count,//数量
                'sort' => array(
                    'attributes' => array(
                        'name'=>array('label'=>'名称'),
                        'type'=>array('label'=>'类型'),
                        'data'=>array('label'=>'数据')
                    )
                ),
                'keyField'=>'name',//Yii 默认的主键是 id,而我的数据库默认的是 name,所以这里设定 name
                'pagination' => array(
                    'pageSize' => 10
                ),
            ));
            $this->render('index',array('dataProvider'=>$dataProvider));        
        }
        
        //自定义函数,用于 type字段的解释
        public function get_type($data,$row){
            $type = $data["type"];
            if( $type == 1 ) {
                echo '权限';
            }elseif( $type == 2 ) {
                echo '角色';
            }elseif( $type == 0 ) {
                echo '任务';
            }
        }

    2.在视图中

    $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'app-item-grid',
        'dataProvider'=>$dataProvider,
        'columns'=>array(
            array(
                'id'=>'CheckBox',//输出复选框
                'class'=>'CCheckBoxColumn',
                'selectableRows' => '50',
            ),
            'name',//保持原样
            array(
                'name'=>'type',
                'type'=>'raw',
                'value'=>array($this,'get_type'),   //get_type 是自定义的函数
                'htmlOptions'=>array('width'=>"100px"),   //设置样式
            ),    
            array(
                'header'=>'附加字段',
                'value'=>'substr($data["name"],0,3)',//如果是 CActiveDataProvider 时用对象方式 $data->name
            ),
        ),
    ))

    3.结果如下

  • 相关阅读:
    黑域,黑阈 Permission denied
    手机闪存速度测试工具,AndroBench
    找进程的窗口Handle
    nginx http 正向代理
    windows命令行netstat 统计连接数
    FLIR ONE PRO热成像仪
    python2.0_s12_day14_jQuery详解
    python2.0_s12_day13_javascript&Dom&jQuery
    ssh&scp指定密钥
    apache+php生产环境错误记录
  • 原文地址:https://www.cnblogs.com/ser0632/p/4493049.html
Copyright © 2011-2022 走看看