Skip to content

Instantly share code, notes, and snippets.

@hidayat365
Created September 11, 2013 22:55
Show Gist options
  • Save hidayat365/6530905 to your computer and use it in GitHub Desktop.
Save hidayat365/6530905 to your computer and use it in GitHub Desktop.
Yii: Cara penggunaan CSqlDataProvider untuk membuat summary sehingga bisa ditampilkan menggunakan CGridView
/************************************************************
* MODEL *
************************************************************/
<?php
/**
* Summary Propinsi
*/
public function getSummaryPropinsi()
{
$count=1;
$sql='
select master_propinsi.id
, master_propinsi.nama
, sum(jumlah_surat_suara_capres_1) as jumlah_surat_suara_capres_1
, sum(jumlah_surat_suara_capres_2) as jumlah_surat_suara_capres_2
, sum(jumlah_surat_suara_capres_3) as jumlah_surat_suara_capres_3
, sum(jumlah_surat_suara_sah) as jumlah_surat_suara_sah
, sum(jumlah_surat_suara_tidak_sah) as jumlah_surat_suara_tidak_sah
from pilpres_results
join master_propinsi on pilpres_results.propinsi_id=master_propinsi.id
group by master_propinsi.id, master_propinsi.nama;
';
// create data provider
$dataProvider=new CSqlDataProvider($sql, array(
'totalItemCount'=>$count,
'sort'=>array(
'attributes'=>array(
'id',
'nama',
'jumlah_surat_suara_capres_1',
'jumlah_surat_suara_capres_2',
'jumlah_surat_suara_capres_3',
'jumlah_surat_suara_sah',
'jumlah_surat_suara_tidak_sah',
),
),
'pagination'=>array(
'pageSize'=>1000,
),
));
// return data provider
return $dataProvider;
}
?>
/************************************************************
* VIEW *
************************************************************/
<?php $this->widget('zii.widgets.grid.CGridView', array(
'itemsCssClass'=>'table table-hover table-striped table-bordered table-condensed',
'id'=>'pilpres-results2-grid',
'dataProvider'=>$model->getSummaryPropinsi(),
'summaryText'=>'',
'columns'=>array(
array(
'header'=>'No.', // row is zero based
'value'=>'$this->grid->dataProvider->pagination->currentPage*$this->grid->dataProvider->pagination->pageSize + $row+1',
'htmlOptions'=>array('width'=>'3%'),
),
array(
'name'=>'nama',
'header'=>'Propinsi',
'htmlOptions'=>array('style'=>'text-align:left', 'width'=>'30%'),
),
array(
'header'=>'Megawati - Prabowo',
'value'=>'number_format($data[\'jumlah_surat_suara_capres_1\'])',
'htmlOptions'=>array('style'=>'text-align:right', 'width'=>'10%'),
),
array(
'header'=>'S.B. Yudhoyono - Budiono',
'value'=>'number_format($data[\'jumlah_surat_suara_capres_2\'])',
'htmlOptions'=>array('style'=>'text-align:right', 'width'=>'10%'),
),
array(
'header'=>'Jusuf Kalla - Wiranto',
'value'=>'number_format($data[\'jumlah_surat_suara_capres_3\'])',
'htmlOptions'=>array('style'=>'text-align:right', 'width'=>'10%'),
),
array(
'header'=>'Jumlah Surat Suara SAH',
'value'=>'number_format($data[\'jumlah_surat_suara_sah\'])',
'htmlOptions'=>array('style'=>'text-align:right', 'width'=>'10%'),
),
array(
'header'=>'Jumlah Surat Suara TIDAK SAH',
'value'=>'number_format($data[\'jumlah_surat_suara_tidak_sah\'])',
'htmlOptions'=>array('style'=>'text-align:right', 'width'=>'10%'),
),
),
)); ?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment