Tutorial Laravel Eloquent Relationship: Menghubungkan Tabel dengan Mudah
Setelah belajar dasar Migration dan Eloquent, pertanyaan selanjutnya adalah: Bagaimana jika data kita saling berhubungan? Misalnya, satu kategori memiliki banyak produk, atau satu user memiliki satu profil.
Di sinilah Eloquent Relationship bekerja. Anda tidak perlu lagi menulis JOIN manual yang rumit. Laravel menyediakannya secara otomatis dan elegan.
1. Memahami Relasi One-to-Many
Relasi One-to-Many adalah yang paling sering digunakan. Contoh paling nyata adalah 1 Kategori memiliki banyak Produk. Mari kita praktikum!
Langkah 1: Menyiapkan Migration
Kita perlu menambahkan kolom kategori_id pada tabel produks sebagai Foreign Key.
Schema::table('produks', function (Blueprint $table) {
$table->foreignId('kategori_id')->constrained();
});
Jangan lupa jalankan php artisan migrate.
2. Mendefinisikan Relasi di Model
Agar Laravel tahu bahwa kedua tabel ini berhubungan, kita harus mendaftarkannya di dalam file Model.
Di Model Kategori (Parent)
Gunakan fungsi hasMany karena satu kategori punya banyak produk.
public function produks()
{
return $this->hasMany(Produk::class);
}
Di Model Produk (Child)
Gunakan fungsi belongsTo karena setiap produk dimiliki oleh satu kategori.
public function kategori()
{
return $this->belongsTo(Kategori::class);
}
3. Cara Mengambil Data Relasi
Sekarang, Anda bisa memanggil data terkait dengan sangat mudah (Magic Methods):
// Mengambil semua produk dari kategori tertentu
$kategori = Kategori::find(1);
$daftarProduk = $kategori->produks;
// Mengambil nama kategori dari sebuah produk
$produk = Produk::find(5);
echo $produk->kategori->nama_kategori;
Perbandingan: SQL vs Eloquent
| Fitur | Cara SQL Manual | Cara Eloquent |
|---|---|---|
| Ambil Data Relasi | Gunakan INNER JOIN yang panjang. |
Cukup panggil properti relasi $data->relasi. |
| Keamanan | Harus waspada SQL Injection. | Sudah aman secara default. |
| Efisiensi Kode | Kode lebih panjang dan sulit dibaca. | Sangat singkat dan "human-readable". |

Social Media