Eloquent ORM adalah Object Relational Mapping bawaan dari framework Laravel. Eloquent ORM memudahkan developer untuk bekerja dengan database. Eloquent ORM memetakan setiap tabel di database ke dalam class model. Dengan ORM kita dapat memetakan tabel-tabel di database beserta relasi ke dalam class-class object dengan menerapkan Object Oriented Programming (OOP). Bagi anda yang menggunakan framework Laravel tentu sudah terbiasa menggunakan Eloquent ORM. Namun tahukah anda kita juga dapat mengintegrasikan Eloquent ORM ke dalam framework Codeigniter. Kali ini kita akan membahas cara Integrasi Eloquent ORM Dengan Codeigniter 3.0.
Step 1 : Install CodeIgniter 3.0
Download Codeigniter 3.0 di website Codeigniter atau klik di sini. Extract ke dalam directory web server anda kemudian coba jalankan di browser.
Step 2 : Install Composer
Composer adalah tool dependecy management yang dimiliki oleh PHP. Dengan Composer kita dapat dengan mudah menginstall, mengonfigurasi, dan menggunakan berbagai packages library PHP di project yang sedang kita kembangkan. Untuk dapat menggunakan Composer kita harus mengaktifkan PHP CLI di server kita. Cara mengisntall Composer cukup mudah, Composer tersedia untuk platform Linux, Mac, maupun Windows.
Instalasi Composer di Windows
- Download installer composer untuk windows disini
- Double click pada file installer dan ikuti petunjuk instalasi sampai selesai
- Setelah terinstall, coba cek dengan menggunakan perintah composer di Command Prompt
Instalasi Composer di Linux/Mac
- Masuk ke folder project kita via Terminal, kemudian ketik perintah curl -sS https://getcomposer.org/installer | php
- Tunggu proses download sampai selesai, kemudian ketik perintah composer
- Ketik composer -v untuk mengecek versi composer yang terinstall
Step 3 : Konfigurasi File composer.json
Langah berikutnya setelah kita selesai menginstall Composer adalah mengonfigurasi file composer.json di folder project kita. File composer.json menyimpan konfigurasi package library apa saja yang akan di install dan di load oleh aplikasi. Buat sebuah file composer.json di folder CodeIgniter kita dengan isi konfigurasi sebagai berikut
{
"description" : "The CodeIgniter framework",
"name" : "codeigniter/framework",
"license": "MIT",
"require": {
"php": ">=5.2.4",
"illuminate/database": "5.0.28",
"illuminate/events": "5.0.28"
},
"require-dev": {
"mikey179/vfsStream": "1.1.*"
}
}
Step 4 : Install Dependencies
Jika file composer.json sudah kita sesuaikan dengan packages apa saja yang akan di install. Langkah selanjutnya adalah memulai download dan install package tersebut melalui Composer. Jalankan perintah composer install pada Command Prompt / Terminal.
Setelah dependencies terinstall, kita perlu menambahkan (include) file autoload.php dari composer ke dalam file index.php Codeigniter. Tambahkan kode berikut ke dalam file index.php
/*
* --------------------------------------------------------------------
* LOAD THE COMPOSER PACKAGE
* --------------------------------------------------------------------
*
*/
require_once 'vendor/autoload.php';
Step 5 : Inisialisasi Eloquent ORM
Selanjutnya kita akan menginisialisasi Eloquent ORM ke dalam project Codeigniter kita. Buat sebuah database terlebih dahulu, disini kita menggunakan database MySQL.
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(50) NOT NULL,
`last_name` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
Kemudian kita menambahkan konfigurasi koneksi database di file application/config/database.php sebagai berikut.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Events\Dispatcher;
use Illuminate\Container\Container;
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'ci_eloquent',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
$capsule = new Capsule;
$capsule->addConnection([
'driver' => 'mysql',
'host' => $db['default']['hostname'],
'database' => $db['default']['database'],
'username' => $db['default']['username'],
'password' => $db['default']['password'],
'charset' => $db['default']['char_set'],
'collation' => $db['default']['dbcollat'],
'prefix' => $db['default']['dbprefix'],
]);
// Set the event dispatcher used by Eloquent models... (optional)
$capsule->setEventDispatcher(new Dispatcher(new Container));
// Make this Capsule instance available globally via static methods... (optional)
$capsule->setAsGlobal();
// Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher())
$capsule->bootEloquent();
Step 6 : Membuat Model
Setelah konfigurasi database selanjutnya kita akan mencoba membuat sebuah model dengan Eloquent ORM.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
use Illuminate\Database\Eloquent\Model as Eloquent;
class User_model extends Eloquent
{
protected $table = 'users';
public $timestamps = false;
}
Uji coba dengan sebuah controller untuk menampilkan data dari database.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class User extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('User_model');
}
public function index()
{
$users = User_model::all();
foreach ($users as $key => $value) {
echo "ID : ".$value->id."<br>";
echo "First Name : ".$value->first_name."<br>";
echo "Last Name : ".$value->last_name."<br>";
echo "Email : ".$value->email."<br><br>";
}
}
}
Ketika controller tersebut di panggil maka akan menampilkan data User dari database.
Untuk daftar fungsi dan method yang ada di Eloquent ORM anda dapat mempelajarinya secara langung di halaman dokumentasi resmi. Untuk contoh source code silakan bisa di unduh di sini. Selamat mencoba :)