This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

Rabu, 16 Maret 2016

[Yii Framework] Mudah Memainkan Database Anda dengan Active Record

Pada Yii Framework dikenal Active Record yang digunakan untuk mempermudah aplikasi berinteraksi dengan database. Yii sendiri sudah cukup jelas memaparkan penggunaan active record pada Yii Framework disini. Tapi saya akan ulas kembali lebih detail beberapa hal terkait cara penggunaan Yii Framework sendiri pada sebuah aplikasi. Saya sendiri akan membahas beberapa active record yang sangat sering saya gunakan dalam pembuatan aplikasi, diantaranya sebagai berikut:
Misal saya memiliki sebuah database dengan tabel “biodata”. Tabel “biodata” sendiri memiliki attribute sebagai berikut:
  1. id : Primary Key, Integer, Auto Increment
  2. nama : varchar(100)
  3. alamat : text il
Tabel tersebut saya input data seperti berikut:
             |   id    |     nama         | alamat                    |
             |    1     |   Joko            | Palembang           |
             |    2    |    Ali                | Jakarta                  |
             |    3    |     Joko           | Papua                     |
             |     4    |   Mahmud    |  Palembang          |
             |     5    |   Ga tahu       | Ga tahu juga        |
  • FindByPk() : Digunakan untuk menemukan data yang memiliki Primary Key tertentu.
contoh penggunaan :
$itu=Biodata::model()->findByPk(2);
Code di atas akan mengembalikan sebuah nilai dari tabel biodata yang memiliki “id” 2. Untuk menampilkan hasil nya, anda dapat gunakan code seperti berikut:
echo $itu->id; (untuk menampilkan id nya)
echo $itu->nama; (untuk menampilkan nama nya)
echo $itu->alamat; (untuk menampilkan alamatnya)
  • FindByAttributes(): Digunakan untuk menemukan data yang memiliki attribute tertentu.
contoh penggunaan :
$itu=Biodata::model()->findByAttributes(array('nama'=>'Ali')); atau bisa juga
$itu=Biodata::model()->findByAttributes(array('nama'=>'Joko','alamat'=>'Palembang'));
Sedangkan tata cara untuk menampilkannya sama saja dengan yang digunakan pada ‘findByPk()’

  • FindAllByAttributes() : Digunakan untuk menemukan data yang memiliki attribute tertentu, tapi data yang di hasilkan lebih dari 1 row data.
contoh penggunaan :
$itu=Biodata::model()->findAllByAttributes(array('nama'=>'Joko'));
Dari code di atas, akan dihasilkan 2 buah row data. Yaitu data dengan ‘id’ 1 dan 3, itu karena kedua nya memiliki ‘nama’ Joko. Karena data yang dihasilkan lebih dari 1, maka cara menampilkannya pun harus 1 per 1. Berikut tata cara untuk menampilkan data nya:
foreach($itu as $i=>$ii)
{
      echo $ii->id;
      echo $ii->nama;
      echo $ii->alamat;
}

  • Menggunakan ‘scopes’
Penggunaan scopes digunakan saat kita membutuhkan sebuah query yang sama berulang-ulang pada suatu aplikasi. Hal ini dimaksud untuk mempermudah dan mempersingkat aktivitas coding kita :D. Contoh penggunaan :
    public function scopes()
    {
        return array(
            'panggilJoko'=>array(
                'condition'=>'nama=Joko',
                'limit'=>5,
            ),
        );
    }
Letakkan kode di atas pada “model” bersangkutan. Kode tersebut jika dipanggil akan menghasilkan semua data dengan nama “Joko” dimana maksimal yang di tampilkan adalah 5 buah data. Berikut contoh code untuk menggunakan fungsi tersebut dan menampilkan data yang dihasilkan dari fungsi tersebut :
$itu=Biodata::model()->panggilJoko()->findAll();
//berikut untuk menampilkan nya
foreach($itu as $i=>$ii)
{
      echo $ii->id;
      echo $ii->nama;
      echo $ii->alamat;
}
  • Menggunakan ‘scopes’ dengan parameter
Pada fungsi yang ada di atas, kita memanggil sebuh query yang sudah kita tetapkan kondisi nya. Misal ‘nama=Joko’, bagaimana bila kita ingin membuat banyak kondisi dimana nama nya bisa kita ubah-ubah setiap saat kita memanggil fungsi tersebut. Tentu kita harus mengubah fungsi tersebut menjadi dinamis dengan cara memberikan parameter pada fungsi tersebut. Berikut cara untuk menggunakannya:
Masukkan code berikut pada ‘model’ bersangkutan:
public function panggilSiapa($nama=Joko)
{
    $this->getDbCriteria()->mergeWith(array(
        'condition'=>'nama='.$nama,
        'limit'=>4,
    ));
    return $this;
}
Kode di atas akan mengembalikan semua data pada tabel biodata yang memiliki nama sesuai dengan kita mau. Tapi bila kita tidak mengisi parameter nama sesuai yang dimaksud, maka code tersebut akan menghasilkan data yang memiliki nama “Joko”(default nya adalah “Joko”). Berikut cara menggunakan fungsi tersebut beserta cara menampilkannya:
$itu=Biodata::model()->panggilSiapa()->findAll(); //mengembalikan semua data dengan nama Joko
$itu=Biodata::model()->panggilSiapa('Ali')->findAll();  //mengembalikan semua data dengan nama Ali
Sedangkan cara menampilkan data nya adalah sebagai berikut:
foreach($itu as $i=>$ii)
{
      echo $ii->id;
      echo $ii->nama;
      echo $ii->alamat;
}
Sebenarnya masih ada banyak Active Record yang tidak saya paparkan 1 per 1 disini, seperti findBySql,findAllBySql, dll.. Anda dapat menggali sendiri penggunaan lainnya. Tapi 1 hal yang perlu anda ingat,
Penggunaan Active Record lebih lambat dari menggunakan SQL query secara langsung ke database. Hal ini sudah dijelaskan langsung dari Yii Framework disini.
Jadi tentukan kebutuhan anda sendiri kapan anda harus menggunakannya atau tidak…
Selamat mencoba…
Semoga membantu…. :D