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.
Belum ada tanggapan untuk "Bekerja dengan Database"
Posting Komentar