Beranda · Contact Us · Downloads

Bekerja dengan Database


Mengenal lebih jauh tentang beberapa fasilitas penunjang operasional database yang disediakan oleh Yii seperti Data Acces Objects (DAO), Query Builder, Active Record, dan Relational Active Record.

Data Acces Objects (DAO)
            DAO dibangun di atas PHP Data Object (PDO), dimana DAO bisa mengakses database management system (DBMS) yang berbeda seperti MySQL, PostgreSQL, dan lain sebagainya.
Untuk menggunakan DAO kita harus membuat koneksi seperti berikut :

$connection=new CDbConnection($dsn,$username,$password);
Berikut adalah format $dsn yang biasanya digunakan :
  • ·         SQLite: sqlite:/path/to/dbfile
  • ·         MySQL/MariaDB: mysql:host=localhost;dbname=testdb
  • ·         PostgreSQL: pgsql:host=localhost;port=5432;dbname=testdb
  • ·         SQL Server: mssql:host=localhost;dbname=testdb
  • ·         Oracle: oci:dbname=//localhost:1521/testdb

Query Builder
Dan berikut adalah contoh penggunaan Query Builder untuk membuat Select SQL :

$user = Yii::app()->db->createCommand()
    ->select('id, username, profile')
    ->from('tbl_user u')
    ->join('tbl_profile p', 'u.id=p.user_id')
    ->where('id=:id', array(':id'=>$id))
    ->queryRow();

Query builder sangat baik digunakan ketika Anda membutuhkan pernyataan SQL secara procedural, seperti pernyataan SQL yang memiliki banyak kondisi di dalamnya.


Active Record
            Active Record (AR) adalah teknik popular Object-Relational Mapping (ORM). Setiap kelas AR akan mewakili suatu table pada database dan propertynya mewakili attribute dari table tersebut. Dasar pengoperasian CRUD diimplementasikan sebagai AR. Sebagai hasilnya kita dapat mengakses data dalam berbagai cara, salah satunya kita bisa menggunakan kode di bawah ini untuk melakukan input data ke dalam tabel :

$post=new Post;
$post->title='sample post';
$post->content='post body content';
$post->save();

Dari kode di atas dapat dilihat kita melakukan input data ke tabel post dengan isian ‘sample post’ untuk field ‘title’, dan ‘post body content’ untuk field ‘content’.

Berikut asumsi tabel yang digunakan:

CREATE TABLE tbl_post (

    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,

    title VARCHAR(128) NOT NULL,

    content TEXT NOT NULL,

    );
 
Dan berikut adalah beberapa contoh operasi pengambilan data :
  •  menampilkan baris pertama pada tabel post dengan kondisi $post=Post::model()->find($condition,$params);
  •  menampilkan baris pertama pada tabel dengan primary key tertentu $post=Post::model()->findByPk($postID,$condition,$params);
  •  menampilkan baris pertama pada tabel berdasarkan atribut tertentu dan memiliki kondisi tertentu $post=Post::model()->findByAttributes($attributes,$condition,$params);
  •  menampilkan baris pertama pada tabel dengan sql tertentu $post=Post::model()->findBySql($sql,$params);

Active Record Relational
            Sebelumnya kita telah melihat bagaimana menggunakan AR untuk mengambil data dari single tabel. Kali ini kita akan menggunakan Active Record Relational untuk mengolah data dari  tabel-tabel yang saling berelasi satu sama lain.  Untuk menggunakan AR Relational kita harus memastikan bahwa datanya telah didefinisikan pada Model AR. 
Sebagai contoh :


Public function relations()
{
Return array(
'author'=>array(self::BELONGS_TO, 'User', 'author_id',
),
}


Pada kode di atas kita menghubungkan model dengan model lain bernama User, dan relasi kedua model tersebut kita beri nama author.

Sebagai contoh nyata, misal kita punya 2 buah tabel masing-masing tbl_post dan tbl_category. Dimana setiap post memiliki kategori sesuai pada tbl_category.

Pertama definisikan relasi pada tbl_post :

Public function relations()
{
Return array(
      ‘category1’=>array(self::BELONGS_TO, ‘category’, ‘id’),
);
}


Nama relasi tersebut adalah category1. Dimana relasi tersebut akan terhubung dengan model category, dan  yang akan terhubung dengan Primary Key model category. Sedangkan atribut dari model post yang terhubung dengan model kelas adalah ‘id’. 
Untuk menggunakannya bisa dengan cara berikut ini :

Category::model()->findByPk(‘10’)->category1->id





Sumber referensi:
Huraira, Sabit. 2012. Menjelajah Yii Framework.


Artikel keren lainnya:

Belum ada tanggapan untuk "Bekerja dengan Database"

Posting Komentar