Quantcast
Channel: BSOURCECODE
Viewing all articles
Browse latest Browse all 10

Yii SQL Query To CGridview

$
0
0

CSqlDataProvider implements a data provider based on a plain SQL statement. This tutorial will help you to display the custom sql query result into cgridview as normal crud view. But dont forget to remove the semicolon in custom sql statement Because it will create error on count query.

Controller.php

<?php
...........
public function actionPending(){
$sql="SELECT * FROM ............";
$rawData = Yii::app()->db->createCommand($sql); 
$count = Yii::app()->db->createCommand('SELECT COUNT(*) FROM (' . $sql . ') as count_alias')->queryScalar(); 
//the count
 $model = new CSqlDataProvider($rawData, array(
                   'keyField' => 'scyid',
                    'totalItemCount' => $count,
                    'sort' => array(
                        'attributes' => array(
                            'scyid', 'annual', 'admission_year_id', 'paid'
                        ),
                        'defaultOrder' => array(
                            'scyid' => CSort::SORT_ASC, //default sort value
                        ),
                    ),
                    'pagination' => array(
                        'pageSize' => 10,
                    ),
                ));
 
        $this->render('customsqlview', array(
            'model' => $model,
        ));
}
...........
?>

customsqlview.php

<?php $this->widget('zii.widgets.grid.CGridView', array(
	'id'=>'student-grid',
	'dataProvider'=>$model,
//	'filter'=>$model,
	'columns'=>array(
		array(
			'header'=>'S.Reg ID',
			'name'=>'scyid',	
		),
		array(
			'header'=>'Annual Amount',
			'name'=>'annual',	
		),
		array(
			'header'=>'Paid Amount',
			'name'=>'paid',	
			'value'=>'$data["paid"]==""?0:$data["paid"]',	
		),
		array(
			'header'=>'Year',
			'name'=>'admission_year_id',
			'value'=>'Yii::app()->list->yeartext($data["admission_year_id"])'
		),
		array(
            'class' => 'CButtonColumn',
            'template' => '{annual}',
            'buttons' => array(
                'annual' => array('url' => 'Yii::app()->createAbsoluteUrl("student/student/create",array("id"=>$data["scyid"],"tab"=>1))','label'=>'<span class="btn btn-xs red">Balance</span>'),
            ),
        ),
	),
)); ?>

Viewing all articles
Browse latest Browse all 10

Trending Articles