Codeigniter untuk pemula, eps 3

M dari pattern MVC pada Codeigniter akan dibantu oleh Doctrine. Referensi bagus ada di sini, jika sudah melihat link tersebut, hampir tidak ada alasan untuk meneruskan membaca tulisan yang saya aing buat. Jika berkeras meneruskan membaca tulisan ini, mari kita mulai. Hahaha.

  1. Pertama mari kita ubah dulu berkas config.php di ci/application/config/.
    //seperti nama variabelnya, base_url adalah nilai statis
    //yang berisi path utama situs/aplikasi web kita
    $config['base_url']	= "http://localhost/ci/";
    
  2. Download doctrine, pada saat tulisan ini dibuat, doctrine stabil yang tersedia adalah versi 1.2.3.
  3. Ekstrak berkas Doctrine-1.2.3.tgz, akan didapatkan folder Doctrine-1.2.3 dan berkas package.xml dalam folder hasil ekstraksi. Dalam folder Doctrine-1.2.3 terdapat folder Doctrine dan 2 berkas, LICENSE dan Doctrine.php
  4. Buat folder plugins/doctrine/lib/ di ci/application/.
  5. Salin atau potong folder Doctrine dan berkas Doctrine.php dari folder hasil ekstraksi ke ci/application/plugins/doctrine/lib/.
  6. Buat berkas doctrine_pi.php di ci/application/plugins/.
     <?php
    // system/application/plugins/doctrine_pi.php
    
    // load Doctrine library
    require_once APPPATH.'/plugins/doctrine/lib/Doctrine.php';
    
    // load database configuration from CodeIgniter
    require_once APPPATH.'/config/database.php';
    
    // this will allow Doctrine to load Model classes automatically
    spl_autoload_register(array('Doctrine', 'autoload'));
    
    // we load our database connections into Doctrine_Manager
    // this loop allows us to use multiple connections later on
    foreach ($db as $connection_name => $db_values) {
    
    	// first we must convert to dsn format
    	$dsn = $db[$connection_name]['dbdriver'] .
    		'://' . $db[$connection_name]['username'] .
    		':' . $db[$connection_name]['password'].
    		'@' . $db[$connection_name]['hostname'] .
    		'/' . $db[$connection_name]['database'];
    
    	Doctrine_Manager::connection($dsn,$connection_name);
    }
    
    // CodeIgniter's Model class needs to be loaded
    require_once BASEPATH.'/libraries/Model.php';
    
    // telling Doctrine where our models are located
    Doctrine::loadModels(APPPATH.'/models');
    
    // (OPTIONAL) CONFIGURATION BELOW
    
    // this will allow us to use "mutators"
    Doctrine_Manager::getInstance()->setAttribute(
    	Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true);
    
    // this sets all table columns to notnull and unsigned (for ints) by default
    Doctrine_Manager::getInstance()->setAttribute(
    	Doctrine::ATTR_DEFAULT_COLUMN_OPTIONS,
    	array('notnull' => true, 'unsigned' => true));
    
    // set the default primary key to be named 'id', integer, 4 bytes
    Doctrine_Manager::getInstance()->setAttribute(
    	Doctrine::ATTR_DEFAULT_IDENTIFIER_OPTIONS,
    	array('name' => 'id', 'type' => 'integer', 'length' => 4));
    
    

    berkas tersebut aing salin dari sini.

  7. Buat tabel dengan nama ci di Mysql.
  8. Ubah berkas database.php di folder ci/application/config/.
    $db['default']['hostname'] = "localhost";
    $db['default']['username'] = "ci";
    $db['default']['password'] = "ci";
    $db['default']['database'] = "ci";
    $db['default']['dbdriver'] = "mysql";
    
  9. Ubah berkas autoload.php dalam folder ci/application/config/.
    //dengan ini, CI akan meload doctrine sebagai plugin
    $autoload['plugin'] = array('doctrine');
    

Oke, sampai di sini kita sudah siap untuk mulai membuat Model.

  1. Buat berkas user.php di folder ci/application/models/.
    <?php
    //membuat kelas User yang merupakan perluasan
    //dari Doctrine_Record
    class User extends Doctrine_Record{
        //membuat fungsi untuk mendefinisikan tabel
        public function  setTableDefinition() {
            //tabel ini, akan bernama 'user' secara default,
            //memiliki kolom 'username', 'password', dan 'real_name'
            $this->hasColumn('username', 'string', 255);
            $this->hasColumn('password', 'string', 255);
            $this->hasColumn('real_name', 'string', 255);
        }
    }
    ?>
    
  2. Buat berkas controller dengan nama pengguna.php di ci/application/controllers/.
    <?php
    
    //membuat kelas Pengguna
    class Pengguna extends Controller{
        //membuat fungsi tambah yang berguna untuk menambah
        //pengguna (menginput data dalam tabel user)
        function tambah(){
            //mendefinisikan variabel $p dengan perilaku
            //seperti kelas User
            $p = new User();
            //variabel $p cukup merujuk pada nama kolom
            //yang telah didefinisikan oleh kelas User untuk
            //mengisi nilainya
            $p->username = 'ci';
            $p->password = 'ci';
            $p->real_name = 'codeigniter';
            //simpan ke dalam tabel
            $p->save();
    
            //tampilkan pesan
            echo "Silahkan cek database ci di Mysql";
        }
    }
    
    ?>
    
  3. Buat tabel user pada Mysql. Kolom yang tersedia adalah id, username, password, dan real_name

    CI Eps 3 Img 1

    Membuat Tabel user

  4. Buka http://localhost/ci/pengguna/tambah

    CI Eps 2 Img 2

    Mengakses Controller pengguna

  5. Periksa tabel user pada Mysql. 

    CI Eps 3 Img 3

    Sukses Menambah Satu Baris Data pada Tabel user

Yap, sukses kita menggunakan doctrine sebagai alat bantu kita. Sejauh ini sepertinya tidak ada kendala yang berarti dalam penggunaan doctrine. Tapi menurut ini, doctrine tidak bisa digunakan jika PHP yang kita gunakan adalah versi 4 (dan di bawahnya).

Oke, sepertinya cukup sekian dulu mengenai doctrinenya, happy coding.

  1. mantab..

    keep posting gan

  2. baru nemu blog mangtabs kawas kieu…hebat! edun suredun si Akang…terus berkaya Kang supaya nu awam bisa diajar oge…hatur nuhun pisan…

  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: