Eloquent (Laravel)

Assalamu'alaikum Wr. Wb

Hello Guys!
Kembali lagi bersama saya Salman Fauzan. Pada kesempatan kali ini, kita masih akan melanjutkan pembahasan kita sebelumnya yaitu mengenai Framework PHP  menggunakan Laravel. Nah, kali ini kita akan membahas tentang Eloquent



Apa itu Eloquent? Eloquent adalah fitur untuk mengelola data yang ada pada database untuk mempermudah user. Eloquent ORM memiliki beberapa fungsi yaitu :

  • Fungsi Active Record
  • Fungsi untuk Mengelola Data
Dengan Eloquent ORM, kita dapat mengelola data dengan mudah dan coda yang singkat. Jadi setiap tabel, memiliki modelnya masing-masing. Model tersebut berisi format dari sebuah tabel tersebut, yang dapat mempermudah kita dalam insert, update data. Kita juga dapat menggunakan relasi antar tabel dengan fitur ini.

Studi Kasus 1 (Implementasikan pada Tabel Kelas)

Langkah pertama adalah dengan membuat sebuah model padafolder App.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Kelas extends Model
{
public $table = 't_kelas';
protected $fillable = [
'nama_kelas','jurusan','lokasi_ruangan','nama_wali_kelas'
];
}

$table digunakan untuk menentukan tabel yang akan digunakan
$fillable digunakan untuk menentukan isi field dari sebua tabel

Kemudian, Edit Function Index() :

public function index() 
{
// $data['kelas'] = \DB::table('t_kelas')
// ->orderBy('nama_kelas')
// ->get();
$data['kelas'] = \App\Kelas::orderBy('nama_kelas')->get();
return view('kelas', $data);
}

Bagian yang dibuat menjadi comment merupakan codingan DB Facades sebelummnya dan bagian yang diaktifkan merupakan codingan Eloquent. Dari codingan diatas, apabila pada Eloquent didalam Modelnya telah didefinisikan table mana yang akan digunakan, jadi pada function index() nya kita hanya perlu memanggil file Model yang terdapat dalam folder App setelah itu kalian dapat menambahkan codingan database untuk mengurutkan data sesuai yang diinginkan.

Edit kembali Function store()

public function store() 
{
   $input = $request->all();

   // unset($input['_token']);
   // $status = \DB::table('t_kelas')->insert($input);


   $status = \App\Kelas::create($input);
}

Nah, untuk di function store() karena kita telah mendefinisikan table yang akan digunakan, maka pada $status kita perlu menanggil kembali Model yang terdapat dalam folder App, kemudian menjalankan Method create($input) 

Jangan lupa edit function update() nya juga


public function update() 
{
   $input = $request->all();

   // unset($input['_token']);
   // unset($input['_method']);
   // $status = \DB::table('t_kelas')->where('id', $id)-  >update($input);

   $kelas = \App\Kelas::find($id);
$status = $Kelas->update($input);

}

Nah, untuk di function update() karena kita telah mendefinisikan table yang akan digunakan, maka pada $kelas kita perlu menanggil kembali Model yang terdapat dalam folder App, kemudian menjalankan Method find($id) yang digunakan untuk mengupdate data yang dipilih, setelah akan dikirimkan ke status apakah berhasil atau tidak. Method find($id) ini yang membuatnya beda dari DB Facades.

Yang terakhir edit function destroy()

public function destroy() 
{
   $kelas = \App\Kelas::find($id);
   $status = $kelas->delete();

   // $status = \DB::table('t_kelas')->where('id', $id)->delete();

}

Tidak jauh berbeda dengan function update(), hanya saja pada function destroy() status akan menjalanan perintah delete bukan update yang digunakan pada function update() sebelumnya.

Studi Kasus 2 (Buatlah Table Guru + CRUD)

Nah, untuk membuat tabel guru dengan Migration kalian dapat melihat postingan sebelumnya tentang Database Migration. Setela kita membuat Migration dengan Command Prompt (CMD) jangan lupa untuk mengedit file Migrationnya dan lakukan Migrate. Tambahkan codingan dibawah ini pada function up() dan function down() yang ada di dalam file Migrationnya : 

public function up()
    {
        Schema::create('t_guru', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nip', 20);
            $table->string('nama_guru', 100);
            $table->string('jenis_kelamin', 1);
            $table->string('alamat', 100);
            $table->timestamps();
        });
    }

public function down()
    {
        Schema::dropIfExists('t_guru');
    }

Selain penggunaan Eloquent diatas, ada pula juga penggunaan Eloquent ORM ( Object Releasing Maping). Eloquent ORM ( Object Releasing Maping) adalah suatu fitur yang memudakan untuk menggunakan query Insert & Update. Langsung saja kita pelajari lebih lanjut mengenai ORM ini.

Eloquent ORM Insert Data ;



Eloquent ORM Update Data :


Untuk hasilnya tidak jauh berbeda dengan yang sebelum - sebelumnya, hanya saja dari segi codingannya berbeda antara 1 dengan yang lainnya ;

Before


After

Studi Kasus 3 (Perbedaan DB Facades & Eloquent)

Beriut adalah beberapa perbedaan antara DB Facades & Eloquent yang dapat saya temukan dalam codingan yang tela digunakan ;

Eloquent :
  • Siswa::all()              -> Menampilkan semua data dalam table 't_siswa'
  • Siswa;;create($input)  ->  Menambahkkan data kedalam 't_siswa'
  • Siswa::find($id)      ->  Mencari data dalam table 't_siswa' yang sesuai
  • Siswa::delete($id)   ->  Menghapus data dalam table 't_siswa' yang sesuai
DB Facades  : 
  • DB::table('t_siswa')->get();                   ->  Menampilkan semua data dalam table 't_siswa'
  • DB::table('t_siswa')->insert($input) -> Menambahkan data kedalam t_siswa
  • DB::table('t_siswa')->where('id',$id)->first();   -> Menampilkan data dalam table 't_siswa' yang sesuai
  • DB::table('t_siswa')->where('id',$id)->delete();  ->  Menghapus data dalam table 't_siswa' yang sesuai
Demikian yang dapat saya sampaikan, mohon maaf bila ada kesalahan dalam pengetikan maupun penjelasan. See You Next!

Wassalamu'alaikum Wr. Wb

Komentar