[ Yii Framework + MongoDb ] Update And Delete Data

Melanjutkan postingan sebelumnya di https://sabitlabscode.wordpress.com/2013/06/28/yii-framework-mongodb-select-collection-and-view/ sekarang kita akan mencoba membuat fungsi update dan delete. After all at least we can create a CRUD operation in Mongodb. Baiklah, pertama-tama mari kita create fungsi di model untuk mengeksekusi perintah update dan delete. Masukkan fungsi berikut pada model anda :

     public function editmongo($id) // udpdate data
    {
        try {
            $connection = new Mongo();
            $database = $connection->selectDB('belajar');
            $collection = $database->selectCollection('siswa');
            //insert some value that we will change
            $varsiswa = array(
                'name' => $this->name,
                'jk' => $this->jk,
                'kota'=>$this->kota,
                'alamat'=>$this->alamat,
                'createddate' => new MongoDate()
            );
            //update data with parameter "_id" and insert value.
            $collection->update(array('_id' => new MongoId($id)),$varsiswa);
            return true;
        }
        catch(MongoConnectionException $e) {
            die("Failed to connect to database ".$e->getMessage());
        }
        catch(MongoException $e) {
            die('Failed to update data '.$e->getMessage());
        }
    }

    // function to delete data
    public function deletemongo($id)
    {    
        try {
            $connection = new Mongo();
            $collection = $connection->belajar->siswa;
            //delete data by document "_id"
            $collection->remove(array('_id'=>new MongoId($id)));
        }
        catch(MongoConnectionException $e) {
            die("Failed to connect to database ".$e->getMessage());
        }
        catch(MongoException $e) {
            die('Failed to do operation '.$e->getMessage());
        }
    }

Setelah itu mari kita buat action pada controller dimana action inilah yang akan dijalankan untuk melakukan request. Pada controller masukkan code berikut :

     public function actionUpdate($id)
    {
        $model=new SiswaForm;
        $data=$model->findOneById($id);
        $model->name=$data['name'];
        $model->jk=$data['jk'];
        $model->kota=$data['kota'];
        if(isset($data['alamat']))
            $model->alamat=$data['alamat'];

        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->editmongo($id))
                {
                    $this->redirect(array('index'));
                }
            }
        }
        $this->render('siswa',array('model'=>$model));    
    }

    public function actionDelete($id)
    {
        $model= new SiswaForm;
        $model->deletemongo($id);
        $this->redirect(array('index'));
    }

Dapat kita lihat pada action update dia me render halaman sedangkan delete tidak. Karena pada update me render halaman “siswa”, sedangkan halaman siswa sendiri sudah ada pada actionSiswa yang telah dibuat pada postingan sebelumnya. Jalankan fungsi tersebut..

Selesai.. happy coding…

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: