Welcome to Abdul Malik Ikhsan's Blog

ORM dengan IgnitedRecord Library ( CodeIgniter)

Posted in Tutorial PHP by samsonasik on December 30, 2008

ORM bisa dikatakan teknik mapping table-table menjadi object yang nantinya dpt direlasikan dengan manfaat mengubah pola pikir query yang rumit menjadi lebih sederhana. Di sini saya coba contohkan dengan salah satu library orm untuk CodeIgniter.
Hal pertama yang harus dilakukan adalah mendownload ignitedrecord library ( http://www.assembla.com/wiki/show/IgnitedRecord ).
Kedua, (kalau menggunakan mysql), hapus semua tanda kutip miring( `  ) yang ada dalam file system/database/drivers/mysql/mysql_utility.php karena berpengaruh pada query `namatable`.`*`
Ketiga, install : Untuk instalasi, bisa dilihat di manualnya 🙂 (RTFM)
Keempat, mulai praktek deh :d
ceritanya, di ignitedRecord menjabarkan relasi table itu dalam 4 tipe, yaitu belongs_to, has_many, has_one, dan has_and_belongs_to_many

belongs_to digunakan untuk penerima relasi baik itu banyak ke satu atau satu ke satu
has_many digunakan untuk mendeskripsikan relasi satu ke banyak
has_one digunakan untuk mendeskripsikan relasi satu ke satu
has_and_belongs_to_many digunakan untuk mendeskripsikan relasi banyak ke banyak

Sekarang, saya akan mencoba mendemokan relasi satu ke banyak, yaitu table users & table posts (nama table harus plural)
field2 table users : id, username, password
field2 table posts : id, teks, user_id
field user_id foreign_key terhadap table users
Nah, kita bisa bikin model2nya seperti berikut :
1. //model/user.php

<?
 class user extends IgnitedRecord{
    var $has_many = 'posts';
}
&#91;/sourcecode&#93;

2. //model/post.php

&#91;sourcecode language='php'&#93;
<?php
class post extends IgnitedRecord{
    var $belongs_to = 'user';
}
&#91;/sourcecode&#93;

Now, at controller :

&#91;sourcecode language='php'&#93;
 ............................
       $this->load->Model('User','user');
        $rec = & $this->user->find_all();
        $data['rec'] = $rec;
        $this->load->view('view_ignited',$data);
.............................

Terakhir, menampilkannya di view :

<?php
foreach($rec as $u)
{
    echo $u->username;
    $post = & $this->user->find($u->id);
    $postrecord = & $post->related('posts');
    $i = 0;
    foreach($postrecord->get() as $key => $posting){ $i +=1;
        echo "
<blockquote>posting ke : ".$i." ".$posting->teks."</blockquote>
";
    }
}
Advertisements

5 Responses

Subscribe to comments with RSS.

  1. Haqqi said, on April 7, 2010 at 3:20 am

    Lebih bagus mana ORM pake ignited record atau Doctrine?

  2. samsonasik said, on April 7, 2010 at 9:10 am

    kalau menurut saya lebih bagus IgnitedRecord, karena kita tak perlu mendefinisikan table,sudah otomatis didefinisikan oleh nama Kelas yang meng-extends IgnitedRecord. Doctrine lebih mirip activerecordnya bawaan CodeIgniter.

  3. Jason said, on August 9, 2012 at 7:02 am

    can you give me source code?

  4. samsonasik said, on August 9, 2012 at 2:48 pm

    this article is so ‘long century’ :), i’m not guarantee the library still work now, i suggest you to use datamapper ( http://datamapper.wanwizard.eu/ )

  5. uyunk said, on October 18, 2012 at 11:35 pm

    lebih bagus grocerycrud


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: