Akses SQL Menggunakan CArrayDataProvider(...)

Kamis, 17 Oktober 2013

Terkadang mengalami kesulitan untuk mengatasi kompleksitas realasi tabel, Yii walaupan relasi bisa dilakukan dengan ORM, tetap menyediakan  perintah dengan menggunakan SQL.  Perintah SQL dijalankan dengan menggunakan methode $daftarBuku=Yii::app()->db->createCommand($sql)->queryAll();   
isi $sql=”SELECT t1.k1, t2.k2 …. FROM t1,t2 WHERE t1.pk1=t2.pk1”

Contoh:

Buka model TblBuku.php Tambahkan fungsi berikut:

 public function lihatBuku()
     {
     $sql='SELECT
        tbl_buku.id
        , tbl_buku.judul_buku
        , tbl_penerbit.nama_penerbit
        , tbl_pengarang.nama_pengarang
        , tbl_buku.isbn_issn
        FROM
           kuliah.tbl_buku
          INNER JOIN kuliah.tbl_penerbit
                ON (tbl_buku.penerbit_id = tbl_penerbit.id)
          INNER JOIN kuliah.tbl_pengarang
                ON (tbl_buku.pengarang_id = tbl_pengarang.id)
          ORDER BY tbl_buku.id ';
       
 
     $daftarBuku=Yii::app()->db->createCommand($sql)->queryAll();   
     $dataProvider=new CArrayDataProvider(
                $daftarBuku,array(
                   'keyField'=>false,
                   'pagination'=>array('pageSize'=>100,),
           ));
          return $dataProvider; 
     }

Perintah :
$daftarBuku=Yii::app()->db->createCommand($sql)->queryAll();   menjalankan sql disimpan ke dalam varibel $daftarBuku

Kemudian tambahkan TblBukuController.php

public function actionDaftarBuku()
    {
        $model=new TblBuku;
        $this->render('daftarBuku',array('model'=>$model,
        ));
    }


dan  bagian  accessRules

public function accessRules()
    {
      return array(
      array('allow', 

       // allow all users to perform 'index' and 'view' actions
                'actions'=>array('index','view','daftarBuku'),
                  'users'=>array('*'),

    ..............}

Tambahkan file daftarBuku.php dalam folder /views/tblBuku/  seperti skrip berikut:

<h1>
DAFTAR BUKU
</h1>
<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'tbl-buku-grid',
    'dataProvider'=>$model->lihatBuku(),
    'columns'=>array(
         array(
         'name'=>'id',
         'type'=>'raw',
         'header'=>'NO',
         'value'=>'CHtml::encode($data["id"])',
         'htmlOptions'=>array('width'=>'3%','style'=>'text-align:left'),
        ),
        array(
         'name'=>'judul',
         'type'=>'raw',
         'header'=>'JUDUL BUKU',
         'value'=>'CHtml::encode($data["judul_buku"])',
         'htmlOptions'=>array('width'=>'30%','style'=>'text-align:left'),   
        ),
      array(
         'name'=>'nama_pengarang',
         'type'=>'raw',
         'header'=>'NAMA PENGARANG',
         'value'=>'CHtml::encode($data["nama_pengarang"])',
         'htmlOptions'=>array('width'=>'30%','style'=>'text-align:left'),
        ),   
      array(
         'name'=>'isbn_issn',
         'type'=>'raw',
         'header'=>'ISBN/ISSN',
         'value'=>'CHtml::encode($data["isbn_issn"])',
         'htmlOptions'=>array('width'=>'10%','style'=>'text-align:left'),

        ),   
    ),
)); ?>

Lihat hasilnya

Cara kerja MVC

Mengunakan Parameter input nama pengarang

Berita Lainnya

Showing 1-3 of 451 items.
Mengupas “Graph Databases” ...
Mengupas “Graph Databases” dalam Seminar Bedah Buku Kamis, 18 Juli 2019

Berbicara tentang teknologi informasi dan komunikasi, data menjadi hal yang penting bahkan diperhatikan integritasnya karena melalui sejumlah data dapat dihasilkan ... Selengkapnya

KASATARUNG Memecahkan Masalah ...
KASATARUNG Memecahkan Masalah dalam Berkomunikasi dengan Tunarungu Sabtu, 13 Juli 2019

Menurut Pernamarian Somad dan Tati Herawati (1996:27), Tunarungu adalah seseorang yang mengalami kekurangan atau kehilangan kemampuan mendengar baik sebagian atau seluruhnya ... Selengkapnya

GANAS 3D, “Game ...
GANAS 3D, “Game Pahlawan Nasional Dengan Visualisasi 3 Dimensi” Metode Baru Pembelajaran Menyenangkan Jumat, 12 Juli 2019

Jika mendengar kata sejarah, yang ada di pikiran adalah sesuatu yang membosankan. Hal ini wajar terjadi. Sebab, mempelajari dan menghapal ... Selengkapnya