Eloquent merupakan salah satu fitur Laravel yang dapat dimanfaatkan untuk mengakses dan memanipulasi data yang tersimpan di dalam database dengan perintah yang lebih singkat dan mempercepat proses pembuatan CRUD dari database.

Eloquent vs Query Builder

Eloquent merupakan Active Record Implementation pada Laravel. dan digunakan sebagai Model. Salah satu contoh penggunaannya adalah apabila dibutuhkan untuk membuat sistem CRUD tentang buku maka harus disiapkan tabel pada database dan membuat Model untuk proses CRUDnya.

Laravel juga menyediakan Query Builder yang dapat dimanfaatkan untuk melakukan pengaksesan data yang bersifat kompleks. Penggunaan Eloquent untuk hal yang bersifat umum lebih membantu pemrogram untuk dapat menyelesaikan pembuatan program dengan lebih cepat.

Memanfaatkan Eloquent

Proses untuk membuat Model dan kemudian dilanjutkan dengan pemanfaatan Eloquent.

Mendefinisikan Model

  • Konfigurasi Model
  • Secara default, model terletak di folder /app
  • Model ini dapat diubah dengan menambahkan konfigurasi di file /composer.json
  • Contoh memindahkan model ke folder Models:
Copy to Clipboard
  • Semua Eloquent Model merupakan turunan dari:
    Illuminate\Database\Eloquent\Model

Membuat Model dengan Artisan

  • Perintah untuk membuat model dengan Artisan adalah sebagai berikut:
Copy to Clipboard
  • Untuk membuat model dengan sekaligus database migration terkait:
Copy to Clipboard
  • Berikut adalah contohModel yang dihasilkan:
Copy to Clipboard

Nama Tabel

  • Nama tabel database akan dibuat menyesuaikan dengan nama Model yang digenerate dengan Artisan
  • Berdasarkan konvensi, nama Model merupakan kata singular diawali huruf besar, misalnya: Car
  • Adapun table yang dihasilkan dari proses migrations diberi nama plural dengan huruf kecil, dimana untuk nama model Car akan dihasilkan table dengan nama cars
  • Apabila diinginkan nama tabel tertentu yang tidak merupakan nama default, contohnya my_cars dapat diganti dengan cara berikut:
Copy to Clipboard

Primary Keys Table

  • Default primary key adalah id, cara mengubah:
Copy to Clipboard
  • Default primary key adalah auto increment, untuk mengubah menjadi tidak auto increment:
Copy to Clipboard
  • Default primary key adalah integer, untuk mengubah:
Copy to Clipboard

Timestamps

  • Secara default, pada model akan dibuatkan 2 field: created_at dan updated_at
  • Apabila tidak diinginkan timestamps:
Copy to Clipboard
  • Mengganti nama field:
Copy to Clipboard

Default Values

  • Default value dari variable dapat ditentukan, misalnya memberikan nilai default false pada field sunroofdengan cara berikut:
Copy to Clipboard

Mengambil Data Model

  • Menggunakan SQL Query
    • Data dapat diambil dengan menggunakan perintah Eloquent atau dengan menggunakan DB Library:
      use DB;
  • Contoh penggunaan:
    $posts = DB::select(‘SELECT * FROM posts’);
  • Mengambil data dengan Eloquent
    • Perintah berikut adalah mengambil semua data dengan method all() dari Model Car pada namespace App dan disimpan dalam variabel $cars. Hasilnya diambil satu persatu dengan perintah foreach dan setiap hasil disimpan dalam variable $car
Copy to Clipboard
  • Menambah Ketentuan
    Contoh berikut adalah mengambil data Car yang sedang dijual (onsale = 1) sebanyak 10 buah berdasarkan urutan merek/brand dengan urutan huruf kecil ke besar (asc). Perintah diakhiri ->get().
Copy to Clipboard
  • Mengambil Ulang Data: Fresh
    Untuk mengambil ulang data dengan ketentuan yang sama, dapat dilakukan dengan perintah ->fresh(). Pada contoh berikut, data pertama yang merek Toyota diambil dan disimpan dalam variable $car. Perintah berikutnya mengambil data baru dengan menggunakan ->fresh() dan disimpan di variabel $freshCar. Isi $car tidak berubah.
Copy to Clipboard
  • Mengambil Ulang Data: Refresh
    Mengambil ulang dapat dilakukan pula dengan menggunakan Refresh, dimana data akan dikembalikan semula.
Copy to Clipboard
  • Membagi Data Besar
    Apabila data yang terdapat di tabel database berjumlah banyak, sebaiknya dipergunakan fitur chunk (potongan) sebagai berikut:
Copy to Clipboard

Pada contoh tersebut data akan diambil per 200 record. Fungsi ini berfungsi untuk mengomptimalkan penggunaan memory

  • Penggunaan Cursor
    Cursor juga dapat dipergunakan untuk penghematan memory, dimana data diambil per record:
Copy to Clipboard
  • Mengambil Data dengan Find
    Berikut adalah perintah mengambil data sesuai dengan primary key table, misalnya untuk mengambil data dengan nilai primary key = 10:
Copy to Clipboard
  • Mengambil Data Pertama
    Mengambil data pertama yang sesuai dengan kriteria:
Copy to Clipboard
  • Lebih dari 1 data dengan Find
    Perintah find juga dapat dipergunakan untuk mengambil lebih dari 1 data berupa collection. Pada contoh berikut perintah ini dipergunakan untuk mengambil data dengan primary key 10, 12, dan 19:
Copy to Clipboard
  • Not Found Exception
    Apabila ingin menghasilkan exception untuk ditangani apabila model tidak diketemukan, dapat dipergunakan findOrFail() atau firstOrFail() contoh potongan program:
Copy to Clipboard
  • Exception yang dihasilkan:
    Illuminate\Database\Eloquent\ModelNotFoundException
  • Menangani Exception
    1. Tambahkan class:
      use Illuminate\Database\Eloquent\ModelNotFoundException;
    2. Gunakan try/catch:
Copy to Clipboard
  • Data Aggregate
    Eloquent juga menyediakan method aggregate seperti: count, max, min, avg, dan sum.
    Berikut adalah contoh penggunaan method aggregate:
Copy to Clipboard

Pada contoh diatas method count() dipergunakan untuk menghitung jumlah record atau data yang dihasilkan, sedangkan method max() digunakan untuk mengambil nilai tertinggi dari field price

Written by: SEW 20191102