Dalam pengembangan web, berinteraksi dengan database adalah hal yang tidak bisa dihindari. Laravel menyediakan fitur yang sangat powerful dan elegan untuk melakukan hal ini, yaitu Eloquent ORM. Pada tutorial ini, kita akan memahami apa itu Eloquent dan bagaimana cara menggunakannya untuk berinteraksi dengan data di database.
Apa Itu Eloquent ORM?
ORM (Object-Relational Mapping) adalah sebuah teknik pemrograman yang memungkinkan Anda untuk berinteraksi dengan database menggunakan objek, bukan dengan query SQL mentah. Anda dapat menganggap ORM sebagai “penerjemah” yang mengubah perintah dalam kode PHP menjadi perintah SQL yang dapat dipahami oleh database.
Eloquent adalah implementasi ORM yang disediakan oleh Laravel. Dengan Eloquent, setiap tabel database memiliki “Model” yang sesuai. Model ini berfungsi sebagai jembatan yang kuat antara aplikasi Anda dan data di tabel tersebut.
Keuntungan Menggunakan Eloquent
- Kode Bersih: Anda tidak perlu menulis query SQL yang panjang. Cukup panggil method dari model.
- Lebih Cepat: Pengembang dapat bekerja lebih cepat karena sintaksnya yang intuitif.
- Mudah Dibaca: Kode lebih mudah dibaca dan dipahami, terutama oleh pengembang lain.
- Kuat: Eloquent menyediakan fitur-fitur canggih seperti relasi antar tabel (relationship), query builder, dan scope yang dapat mempercepat pengembangan.
Langkah 1: Membuat Model
Setiap tabel di database Anda harus memiliki model yang sesuai. Untuk membuat model baru, gunakan Artisan CLI. Misalnya, kita akan membuat model untuk tabel mahasiswa.
php artisan make:model Mahasiswa
Perintah ini akan membuat file Mahasiswa.php di dalam direktori app/Models/. Secara default, Eloquent akan menganggap nama tabelnya adalah versi plural dari nama model (yaitu mahasiswas). Jika nama tabel Anda berbeda (misalnya mahasiswa), Anda bisa menentukannya secara manual di dalam model.
app/Models/Mahasiswa.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Mahasiswa extends Model
{
use HasFactory;
// Opsional: Jika nama tabel berbeda dari konvensi Eloquent
protected $table = 'mahasiswa';
// Opsional: Kolom yang dapat diisi secara massal
protected $fillable = ['nama', 'nim', 'jurusan'];
}
protected $table: Digunakan jika nama tabel Anda tidak sesuai dengan konvensi penamaan Eloquent.protected $fillable: Penting untuk keamanan. Ini adalah daftar kolom yang diizinkan untuk diisi secara massal (mass assignment) saat menggunakan metode seperticreate()atauupdate().
Langkah 2: Berinteraksi dengan Database (CRUD)
Sekarang, mari kita lihat bagaimana Eloquent mempermudah operasi dasar database (CRUD: Create, Read, Update, Delete). Anda bisa menggunakan kode ini di controller atau di route.
1. Create (Menambah Data)
Untuk membuat data baru, Anda bisa menggunakan metode create() pada model.
use App\Models\Mahasiswa;
// ... di dalam controller
$mahasiswaBaru = Mahasiswa::create([
'nama' => 'Budi Santoso',
'nim' => '123456789',
'jurusan' => 'Teknik Informatika'
]);
2. Read (Mengambil Data)
Eloquent menyediakan berbagai metode untuk mengambil data.
- Mengambil semua data:
PHP
$semuaMahasiswa = Mahasiswa::all(); - Mengambil satu data berdasarkan ID:
PHP
$mahasiswa = Mahasiswa::find(1); // Mencari mahasiswa dengan ID 1 - Mengambil data dengan kondisi WHERE:
PHP
$mahasiswaTI = Mahasiswa::where('jurusan', 'Teknik Informatika')->get(); - Mengambil data pertama yang cocok dengan kondisi:
PHP
$mahasiswaPertama = Mahasiswa::where('nim', '123456789')->first();
3. Update (Memperbarui Data)
Untuk memperbarui data, Anda perlu mencari data terlebih dahulu, kemudian mengubah atributnya, dan memanggil metode save().
$mahasiswa = Mahasiswa::find(1); // Cari mahasiswa dengan ID 1
$mahasiswa->jurusan = 'Sistem Informasi'; // Ubah kolom jurusan
$mahasiswa->save(); // Simpan perubahan
Atau Anda bisa menggunakan update():
Mahasiswa::where('nim', '123456789')->update(['jurusan' => 'Sistem Informasi']);
4. Delete (Menghapus Data)
Untuk menghapus data, Anda perlu mencari data terlebih dahulu dan memanggil metode delete().
$mahasiswa = Mahasiswa::find(1);
$mahasiswa->delete(); // Hapus data dengan ID 1
Atau Anda bisa menghapus data dengan kondisi tertentu secara langsung:
Mahasiswa::where('nim', '123456789')->delete();
Relasi Antar Tabel (Relationship)
Salah satu kekuatan utama Eloquent adalah kemampuannya mengelola relasi antar tabel. Misalnya, jika satu mahasiswa bisa memiliki banyak mata kuliah.
- One-to-Many: Satu mahasiswa memiliki banyak mata kuliah.
- Many-to-Many: Satu mahasiswa bisa mengambil banyak mata kuliah, dan satu mata kuliah bisa diambil oleh banyak mahasiswa.
Dengan mendefinisikan relasi di dalam model, Anda bisa mengakses data terkait dengan sangat mudah.
// Di dalam model Mahasiswa.php
public function mataKuliah()
{
return $this->hasMany(MataKuliah::class);
}
// Mengakses data mata kuliah dari seorang mahasiswa
$mahasiswa = Mahasiswa::find(1);
foreach ($mahasiswa->mataKuliah as $mk) {
echo $mk->nama_mk;
}
Kesimpulan
Eloquent ORM adalah fitur yang membuat Laravel begitu dicintai oleh para pengembang. Dengan Eloquent, Anda dapat mengelola database dengan cara yang lebih intuitif, efisien, dan menyenangkan. Anda tidak perlu lagi menulis query SQL yang rumit, dan dapat fokus pada logika bisnis aplikasi Anda. Menguasai Eloquent adalah langkah penting untuk menjadi pengembang Laravel yang mahir.
Pada tutorial selanjutnya, kita akan membahas cara mengelola seeder di Laravel, yang berguna untuk mengisi database dengan data awal. Tetap ikuti seri tutorial ini!