Selasa, 10 Februari 2015

Cara Penggunaan Database di Laravel

Di dalam Laravel terdapat 3 cara untuk berinteraksi dengan database yaitu :
  • Raw Query
  • Query Builder (Fluent Query)
  • Eloquent ORM
Metode - metode tersebut di ibaratkan seperti tingkat bahasa pemrograman dimana semakin kebawah semakin dimengerti oleh manusia namun semakin rumit dimengerti oleh komputer.
Kita langsung saja sebelumnya persiapkan dulu database dan tabel nya dalam contoh tutorial ini menggunakan nama tabel mahasiswa seperti dibawah ini :

 Kalo anda males bikin tabel dan isinya kaya gini copas aja script Sql di bawah ini :
 CREATE TABLE IF NOT EXISTS `mahasiswa` (
 `nim` int(11) NOT NULL,
 `nama` varchar(100) NOT NULL,
 `alamat` text NOT NULL,
 `semester` int(11) NOT NULL,
 `status` int(11) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `mahasiswa`
--

INSERT INTO `mahasiswa` (`nim`, `nama`, `alamat`, `semester`, `status`) VALUES
(1006017, 'Udin Hermawan', 'Jl.Cimanuk no 129 Bekasi', 2, 1),
(1007013, 'Asep Saepudin', 'Jl.papandayan kec Tarogong Jakarta ', 2, 1),
(1005013, 'Indah Purnama', 'Jl. serba galau Kec. Gelisah Kab. Mandalagiri', 8, 1);
database dan tabel sudah siap ? sekarang kita configurasi koneksi database nya buka file app/config/database  pada folder project laravel anda.
pada Laravel 4 mendukung 4 sistem database yaitu sqlite, mysql, psgsql dan sqlsrv anda tinggal sesuaikan dengan sistem database anda. Namun saya rasa anda menggunakan mySql. sesuaikan host, nama database , username dan password nya. seperti contoh dibawah ini :
 'driver' => 'mysql',
 'host' => 'localhost',
 'database' => 'namadatabase',
 'username' => 'usernamenya',
 'password' => 'passwordnya',
 'charset' => 'utf8',
 'collation' => 'utf8_unicode_ci',
 'prefix' => '',
sudah terkoneksi ? sekarang saatnya !!

Raw Query

Metode raw query ini mirip atau memang sama dengan query sql biasa , jadi mungkin anda sudah biasa menggunakannya.Namun disini kita harus menggunakan class DB  dan di ikuti statement seperti insert, update, delete  lihat contoh dibawah ini :
 //SELECT
$mahasiswa = DB::select('select * from mahasiswa');

foreach($mahasiswa as $dt){
 echo $dt->nama;
}

//SELECT dengan Parameter
$results = DB::select('select * from mahasiswa where nim = ?', array(1006017));
foreach($mahasiswa as $dt){
 echo $dt->nama;
}

//INSERT
DB::insert('insert into mahasiswa (nim, nama, alamat, semester) values (?, ?, ?, ?)', array(1001728, 'Udin', 'Bandung Cicaheum','4'));

//UPDATE
DB::update('update users set nama = Agus Mauladig where nim = ?', array('1006017'));

//DELETE
DB::delete('delete from mahasiswa');

DB::delete('delete from mahasiswa where nim = ? ',array('1006017'));

//GENERAL STATEMENT
DB::statement('drop table mahasiswa');

Query Builder / Fluent Query

Dengan query builder code query lebih nyaman dibaca dan lebih mudah karena kita tidak dikhawatirkan dengan perbedaan penulisan native query yang mungkin ada perbedaan antara sistem database satu dengan yang lain.
 //SELECT
$mahasiswa = DB::table('mahasiswa')->get();

foreach ($mahasiswa as $dt)
{
 echo $dt->nama;
}

//SELECT DENGAN PARAMETER
$mahasiswa = DB::table('mahasiswa')->where('semester','3')->get();

foreach ($mahasiswa as $dt)
{
 echo $dt->nama;
}

//MENAMPILKAN SATU BARIS
$mahasiswa = DB::table('mahasiswa')->where('semester','3')->first();

echo $mahasiswa->nama;

//SELECT KOLOM TERTENTU
$mahasiswa = DB::table('mahasiswa')->select('min', 'nama')->where('id', 1006017)->first();

foreach ($mahasiswa as $dt)
{
 echo $dt->nim;
 echo $dt->nama;
}

//SELECT SATU KOLOM
$mahasiswa = DB::table('mahasiswa')->orderBy('semester', 'desc')->pluck('nama');
foreach ($mahasiswa as $dt)
{
 echo 'namanya adalah :'.$dt->nama;
}

//MENAMBAHKAN STATEMENT BERDASARKAN VARIABEL
$nama = DB::table('mahasiswa')->select('nama');
$query = $query->addSelect('semester')->get();

//BANYAK STATEMENT
$query = DB::table('mahasiswa')
 ->where('semester', '>', 1)
 ->orWhere('nim', '1006017')
 ->orderBy('nama', 'asc')
 ->get();

//MEMBATASI (Offset & Limit)
$users = DB::table('mahasiswa')->skip(2)->take(5)->get();

Eloquent ORM

Eloquent adalah Sebuah ORM (Object Relational Mapping) yang dibundling bersama Laravel Framework. ORM ini sangat sederhana menurut saya tapi justru disitulah nilai lebih dari ORM ini.Setiap model eloquent yang kita buat akan bertanggung jawab atas satu tabel dalam database. Misalnya kita telah mempunyai tabel mahasiswa , kita harus membuat model baru yang bertanggung jawab atas tabel mahasiswa. Sebagai contoh buat file Mahasiswa.php di app/models definisikan dulu model nya seperti ini
 class Mahasiswa extends Eloquent {

 protected $table = 'mahasiswa'; //nama tabelnya
 protected $primaryKey = 'nim'; //Primary Key nya

}
hal yang harus di perhatikan diatas dalam eloquent kita harus mengextends Eloquent dan menambahkan nama tabel.
Setelah itu kita bisa melakukan berbagai macam query dengan memanggil nama Class di model nya diikuti dengan function seperti contoh dibawah ini :
Fungsi Menampilkan
 //MENAMPILKAN SEMUA
$mahasiswa = Mahasiswa::all();

//MENAMPILKAN BERDASAR ID
$mahasiswa = Mahasiswa::find(1006017);

//PARAMETER WHERE
$mahasiswa = Mahasiswa::where('semester','4')->get();

//WHERE DENGAN AGGREGAT
$mahasiswa = Mahasiswa::where('semester','>','2')->get();
Insert, Update , Delete
Untuk menambahkan objek baru caranya seperti ini
$mahasiswa = New Mahasiswa;
$mahasiswa->nim = '1007012';
$mahasiswa->nama = 'Arief Budiman';
$mahasiswa->alamat = 'Garut Kota Intan';
$mahasiswa->semester = 4;
$mahasiswa->save();
Mengupdate objek pada baris/row tertentu berdasarkan
$mahasiswa = Mahasiswa::find(1006017);
$mahasiswa->nama = 'Arief Budiman';
$mahasiswa->alamat = 'Garut Kota Intan';
$mahasiswa->semester = 4;
$mahasiswa->save();
Menghapus baris pada tabel
 //DELETE SATU BARUS
$mahasiswa = Mahasiswa::find(1006017);
$mahasiswa->delete();
//DELETE BANYAK BARIS
$mahasiswa = Mahasiswa::where('semester','3')->delete();

KESIMPULAN
Dari 3 metode diatas yang paling direkomendasikan yaitu metode Eloquent ORM karena lebih mudah, fleksibel dan terorganisir.namun dalam beberapa kasus Eloquent gagal dalam menangani SQL Query yang rumit. JIka itu terjadi anda gabungkan saja dengan metode yang lainya. Kalau saya selalu menggunakan Eloquent ORM.

Sumber : Ilmuwebsiteku Interaksi dengan Database pada Laravel

Tidak ada komentar:

Posting Komentar