2015-12-27
Bekerja Dengan Database Kelas CActiveRecord
• Kelas dasar untuk representasi database relasional • Mengacu pada suatu tabel dan rekamannya Propety
• attributes • commandBuilder • db • dbConnection • dbCriteria • isNewRecord • primaryKey • safeAttributeNames • tableAlias • tableSchema • validators
Public methode
findByAttributes() findByAttributes ()
findByPk() findByPk() findBySql() findBySql () getDbConnection() getDbConnection () getDbCriteria() getDbCriteria () getErrors() getErrors () relations()
rules() save() saveAttributes() saveAttributes () scopes() tableName() tableName () updateCounters() updateCounters () validate() with()
1
2015-12-27
Protected methode
count() delete() deleteAll() deleteAllByAttributes() deleteByPk() exists() find() findAll() findAllByAttributes() findAllByPk()
• findAllBySql() • query()
Operasi CRUD
Create
Menambah rekaman baru
Read ◦ Membaca rekaman
Update ◦ Mengubah rekaman
Delete ◦ Menghapus rekaman
2
2015-12-27
Create Menambah rekaman tabel kota kelas Kota adalah perluasan kelas CActiveRecrord Contoh : $model = new Kota; $model->kode_kota=‘0110’; $model->nama_kota=‘Yogyakarta’; $model->kode_prop=‘01’; $model->save();
Update $model = new Kota; $model->findByPk(‘0110’); $model->nama_kota=‘Bantul’; $model->kode_prop=‘01’; $model->save(); Perintah : $model->findByPk(‘0110’); Mencari rekaman berdasarkan kunci utama (primary key)
3
2015-12-27
Read Terdapat sejumlah methode yang sering digunakan untuk pembacaan rekakam find() findByPk() findAll() findAllByAttributes() findAllByPk() findAllBySql()
find() membaca rekaman dengan menggunakan parameter kondisi yang akan menghasilkan 1 rekaman. Contoh :
$nilai=Nilai::model()->find( array('condition'=>'mapel_id'=:m_id AND semester_id=:smt_id’, 'params'=>array(':m_id'=>$mapel_id, ’:smt_id’=>$smt_id)))->nilai; echo $nilai;
4
2015-12-27
Bagan find()
finByPk() finByPk () Perintah pembacaan rekaman berdasarkan kunci pecarian dengan menggunakan kunci primer $model = Kota::model()->finByPk(‘0110’); atau $model = Kota::model()->finByPk(arry(‘kode_kota’=>’0110’)); Menampilkan hasilnya nama_kota; ?>
5
2015-12-27
findAll() findAll () methode findAll() menampilkan semua rekaman. (SELECT * FROM tabel) $model=Kota::model()->findAll(); Atau $model=Kota::model()->findAll(array('select'=>‘kode_kota,nama_kota,)); // menampilkan hasilnya
foreach ($model as $hasil) { echo $hasil->kode_kota; echo $hasil->nama_kota; echo “
findAllByAttributes() findAllByAttributes () Digunakan untuk menemukan data yang memiliki attribute tertentu. tapi data yang di hasilkan lebih dari 1 row data. $mhsId='12001'; $model = Nilai::model()->findAllByAttributes(array('mhs_id'=>$mhsId)); foreach($model as $models) { echo "
"; echo "MK :" . $models->mk_id . ", Nilai :" . $models->nilai; } ?>
6
2015-12-27
findByAttributes() findByAttributes () methode untuk membaca rekaman dengan menggunakan parmeter atribut dan nilai atribut findAllByAttributes( array('mk_id'=>'MK011')); foreach($model as $models) { echo "
"; echo "NIM :" . $models->mhs_id . " MK :" . $models->mk_id . ", Nilai :" . $models->nilai; } ?>
findAllByPk() findAllByPk () methode untuk membaca rekaman dengan parameter array nilai-nilai kunci primer. Contoh : $model = Nilai::model()->findAllByPk(array(1,2,3)); foreach($model as $models) { echo "
"; echo "ID :" . $models->id . ", Nilai :" . $models->nilai; }
7
2015-12-27
findAllBySql() findAllBySql () untuk membaca rekaman dengan menggunakan parameter perintah SQL findAllBySql( 'SELECT mhs_id,mk_id,nilai FROM nilai'); foreach($model as $models) { echo "
"; echo " NIM :" . $models->mhs_id . " MK :" . $models->mk_id . " Nilai :" . $models->nilai; } ?>
findAllBySql() findAllBySql ()
dengan menggunakan parameter
findAllBySql( 'SELECT * FROM nilai WHERE mhs_id=:mhs_id', array(':mhs_id'=>'12001'));
foreach($model as $models) { echo "
"; echo "NIM :" . $models->mhs_id . " MK :" . $models->mk_id . " Nilai :" . $models->nilai; } ?>
8
2015-12-27
DBCreteria kelas yang memungkinkan menyesuaikan permintaan melalui objek memanggil kelas
$criteria = new CDbCriteria(); Properti Condition Limit Offset Order Params Select
Set Logika klausa WHERE dalam sql Nilai limit Nilai offset Perintah ORDER BY dalam sql Parameter variabel Memilih kolom dengan perintah SELECT
contoh: $criteria = new CDbCriteria(); $criteria->condition = 'id=:id'; $criteria->params = array(':id'=>$id); $model = Page::model()->find($criteria);
9
2015-12-27
Penggunaan alias
Penggunaan properti alias dalam kelas CDbCreteria . Pemberian nama alias tebal seperti pada perintah berikut: Contoh:
$criteria=new CDbCriteria; $criteria->alias = 'tbl'; $criteria->select ='tbl.id,tbl.jenis_barang'; $model = JenisBarang::model()->findAll($criteria);
Penggunaan Condition Penggunaan kondisi dalam Query seperti penggunaan klausa “WHERE” yang fungsinya untuk melakukan filter. contoh:
$criteria = new CDbCriteria; $criteria->condition = 'jenis_barang_id =1'; $model = JenisBarang::model()->findAll($criteria);
10
2015-12-27
Penggunaan distinct Penggunaan perintah distinct dugunakan untuk membaca menjadi satu untuk rekaman yang ganda contoh:
$criteria = new CDbCriteria; $criteria->condition ='jenis_barang_id=1'; $criteria->distinct = true
Penggunaan group group dalam kelas CDbCreteria digunakan untuk pengelompokan rekaman. contoh:
$criteria = new CDbCriteria; $criteria->alias='t'; $criteria->select='t.jenis_barang_id, count(t.id) as jumlah'; $criteria->group='jenis_barang_id';
11
2015-12-27
Penggunaan join Penggunaan join dalam query bisanya dipakai untuk relasi antar tabel. contoh:
$criteria = new CDbCriteria; $criteria->select ='t.id, t.nama_barang, t.stok, jb.jenis_barang'; $criteria->join="INNER JOIN jenis_barang as jb ON(jb.id=t.jenis_barang_id)";
Penggunaan order by order by untuk menampilkan pembacaan rekaman secara urut dari perintah query contoh:
$criteria = new CDbCriteria; $criteria->select ='t.id, t.nama_barang, t.stok, jb.jenis_barang'; $criteria->join="INNER JOIN jenis_barang as jb ON(jb.id=t.jenis_barang_id)"; $criteria->order="nama_barang";
12
2015-12-27
Penggunaan params melakukan filter dengan menggunakan nilai parameter, properti params seperti klausa WHERE id=? contoh:
$jenis_id=1; $criteria = new CDbCriteria; $criteria->condition= "jenis_barang_id=:id"; $criteria->params=array(':id'=>$jenis_id);
Penggunaan select DBCreteria terdapat properti DBCriteria>select, untuk memilih kolom contoh:
$criteria = new CDbCriteria; $criteria->select ='t.id, t.nama_barang, t.stok';
13
2015-12-27
Penggunaan addCondition sama dengan condition contoh:
$criteria = new CDbCriteria; $criteria->addCondition('jenis_barang_id=1'); $model = Barang::model()->findAll($criteria);
Delete (1)
deleteByPk() menghapus rekaman mengapus menggunakan parameter kunci primer. $id=1; $model = Nilai::model()->deleteByPk($id);
Atau $model = Nilai::model()->findByPk($id); $model->delete();
14
2015-12-27
Delete (2) deleteAll() digunakan untuk menghapus lebih dari satu rekaman $mk_id=’MK012’; $criteria = new CDbCriteria(); $criteria->condition = 'mk_id=:mk_id'; $criteria->params = array(':mk_id'=>$mk_id); $model = Nilai::model()->deleteAll($criteria)
15