[Yii Framework + Mongodb] Insert Value

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..

2 Responses to [Yii Framework + Mongodb] Insert Value

  1. Benny Wijaya says:

    gan kalau pake ni
    setingan crud yg udh dibuat pake gii di yii frame ikut berubah?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: