[Yii Framework + Mongodb] Select Collection And View

From my previous post here https://sabitlabscode.wordpress.com/2013/06/28/yii-framework-mongodb-insert-value/, sekarang saya akan coba paparkan cara menampilkan suatu data dalam suatu collection dan bagimana menampilkan halaman detail dari suatu nilai. First, create fungsi baru di model “SiswaForm” yang telah kita buat tadi :

    //return all value from a collcetion
    public function findallmongo()
    {
        try {
            $connection = new Mongo();
            $database = $connection->selectDB('belajar');
            $collection = $database->selectCollection('siswa');
            return $collection->find();
        }
        catch(MongoConnectionException $e) {
            die("Failed to connect to database ".$e->getMessage());
        }
        catch(MongoException $e) {
            die($e->getMessage());
        }    
    }

    //find a value from collection by id
    public function findOneById($id)
    {
        try 
        {
            $connection = new Mongo();
            $database = $connection->selectDB('belajar');
            $collection = $database->selectCollection('siswa');
            return $collection->findOne(array('_id'=>new MongoId($id)));
        }
        catch(MongoConnectionException $e) {
            die("Failed to connect to database ".$e->getMessage());
        }
        catch(MongoException $e) {
            die($e->getMessage());
        }    
    }

Next, create dua buah action di controller. Action pertama digunakan untuk menampilkan all data from collection. Yang kedua untuk menampilkan detail data from collection yang telah kita pilih. Insert this code to controller :

    //action for show all data in a collection
    public function actionIndex()
    {
        $model=new SiswaForm;
        $data=$model->findallmongo();
        $this->render('index',array(
            'data'=>$data,
        ));
    }

    //action for show a detail data from collection
    public function actionView($id)
    {
        $model=new SiswaForm;
        $data=$model->findOneById($id);
        $this->render('view',array(
            'data'=>$data,
        ));
    }

Setelah selesai, kita akan create view untuk masing-masing action. Yang pertama adalah view “index” for actionIndex dan yang kedua adalah view “view” for actionView. Berikut adalah code view “index” :

<h1>Test Mongo - Siswa</h1>
<?php 
    while ($data->hasNext()):
        $siswa = $data->getNext(); 
?>
<h2><?php echo CHtml::link($siswa['name'],array('view','id'=>$siswa['_id'])); ?></h2>
<p><?php echo $siswa['kota']; ?></p>
<p><?php echo $siswa['jk']; ?></p>
<?php if(isset($siswa['alamat'])){ ?>
    <p><?php echo $siswa['alamat']; ?></p>
<?php } ?>
<?php endwhile; ?>

Kemudian berikut adalah view “view”

<h1>Test Mongo - Siswa</h1>
<h2><?php echo $data['name']; ?></h2>
<p><?php echo $data['kota']; ?></p>
<p><?php echo $data['jk']; ?></p>
<?php if(isset($data['alamat'])){ ?>
    <p><?php echo $data['alamat']; ?></p>
<?php } ?>

Selesai… You can run your application now..

Happy coding..

2 Responses to [Yii Framework + Mongodb] Select Collection And View

  1. Arya Pramudya says:

    mas sabit ini kenapa ya ketika saya klik di document nama saya di index, malah error
    “http://localhost/yii-mongo/index.php/site/53370d12d560753e23f82ec1” padahal di echo sudah keluar id nya baik menggunakan while ataupun di foreach.

    Thanks

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: