June 28, 2013
by Sabit Huraira
Berikut adalah contoh melakukan insert data ke dalam mongodb dengan menggunkan Yii Framework. Sebelumnya perlu anda ketahui pada Yii Framework sendiri telah ada extension yang bagus digunakan untuk mengoneksikan Yii dengan Mongodb yaitu Yiimongodbsuite yang dapat anda lihat di http://www.yiiframework.com/extension/yiimongodbsuite/. Tetapi untuk postingan kali ini saya tidak menggunakan extension tersebut. Dengan begitu code ini dapat diimplementasikan baik di Yii, framework PHP lain, maupun menggunakan pure PHP.
Sebelum memulai, pastikan bahwa server anda telah memiliki driver untuk mongodb, jika belum silahkan install. Pertama-tama buatlah database, lalu collection seperti postingan ini. Lalu dengan mengacu collection tersebut, buatlah sebuah model pada Yii Framework dengan nama “SiswaForm”, masukkan code berikut :
<?php
class SiswaForm extends CFormModel
{
public $name;
public $jk;
public $kota;
public $alamat;
public $createddate;
public function rules()
{
return array(
array('name', 'required'),
);
}
public function attributeLabels()
{
return array(
'name'=>'Name',
'jk'=>'Sex',
'kota'=>'City',
'alamat'=>'Address',
'createddate'=>'Crated Date',
);
}
//digunakan untuk menyimpan data pada mongodb
public function savemongo()
{
try {
//memanggil class mongodb, secara default port mongodb adalah 27071. Jika portnya berbeda, maka
//anda perlu melakukan konfigurasi lagi pada code. Find it on google.
$connection = new Mongo();
//menentukan dataabase mana yang akan kita gunakan.
$database = $connection->selectDB('belajar');
//mendefinisikan suatu collection ke dalam variabel
$collection = $database->selectCollection('siswa');
// memasukkan nilai-nilai ke dalam collection
// jika anda menggunakan code selain Yii. Just change the value with your value.
$varsiswa = array(
'name' => $this->name,
'jk' => $this->jk,
'kota'=>$this->kota,
'alamat'=>$this->alamat,
'createddate' => new MongoDate() // this is for insert an automatic date from mongodb
);
//save data
$collection->insert($varsiswa,array('safe'=>true));
return true;
}
catch(MongoConnectionException $e) {
//let you know when it failed connect to your database
die("Failed to connect to database ".$e->getMessage());
}
catch(MongoException $e) {
// let you know when we failed to insert data.
die('Failed to insert data '.$e->getMessage());
}
}
}
Code di atas digunakan untuk menyediakan inputan data yang akan dimasukkan ke dalam mongodb collection. Juga terdapat fungsi “savemongo()” dimana fungsi tersebutlah yang akan menyimpan data ke dalam mongodb collection. Penjelasan dari code tersebut dapat anda lihat pada komentar nya.
Setelah itu buatlah sebuah action seperti berikut :
public function actionSiswa()
{
$model=new SiswaForm;
if(isset($_POST['SiswaForm']))
{
$model->name=$_POST['SiswaForm']['name'];
$model->jk=$_POST['SiswaForm']['jk'];
$model->kota=$_POST['SiswaForm']['kota'];
$model->alamat=$_POST['SiswaForm']['alamat'];
if($model->validate())
{
if($model->savemongo())
{
$this->redirect(array('index'));
}
}
}
$this->render('siswa',array('model'=>$model));
}
Lalu terakhir, buatlah view “siswa” dengan membuat viewnya dan masukkan code berikut :
<h1>Test Mongo - Siswa</h1>
<div>
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'contact-form',
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit'=>true,
),
)); ?>
<p>Fields with <span>*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<div>
<?php echo $form->labelEx($model,'name'); ?>
<?php echo $form->textField($model,'name'); ?>
<?php echo $form->error($model,'name'); ?>
</div>
<div>
<?php echo $form->labelEx($model,'jk'); ?>
<?php echo $form->textField($model,'jk'); ?>
<?php echo $form->error($model,'jk'); ?>
</div>
<div>
<?php echo $form->labelEx($model,'kota'); ?>
<?php echo $form->textField($model,'kota',array('size'=>60,'maxlength'=>128)); ?>
<?php echo $form->error($model,'kota'); ?>
</div>
<div>
<?php echo $form->labelEx($model,'alamat'); ?>
<?php echo $form->textArea($model,'alamat',array('rows'=>6, 'cols'=>50)); ?>
<?php echo $form->error($model,'alamat'); ?>
</div>
<div>
<?php echo CHtml::submitButton('Submit'); ?>
</div>
<?php $this->endWidget(); ?>
</div>
Selesai,.. Jalankan aplikasi anda. Untuk melihat apakah data yang diinsert berhasil atau tidak, lihatlah melalui command prompot anda (bila tidak tahu lihat tutorial saya sebelumnya)..
Happy coding..
Komentar