Model Laravel dan Relasi Antar Model
Memahami konsep Model, Eloquent ORM, serta hubungan antar tabel database pada Laravel
1. Pengertian Model Laravel
Model pada Laravel merupakan representasi dari tabel pada database. Laravel menggunakan Eloquent ORM yang memungkinkan developer berinteraksi dengan database menggunakan objek PHP tanpa menulis query SQL secara langsung.
Konsep penting pada Laravel adalah:
1 Model mewakili 1 tabel database
Contoh:
| Model | Tabel |
|---|---|
| User | users |
| Post | posts |
| Mahasiswa | mahasiswa |
User โ users
Post โ posts
Mahasiswa โ mahasiswa
Jika nama tabel berbeda:
protected $table = ‘mahasiswa’;
—
2. Membuat Model
Model dapat dibuat menggunakan artisan command Laravel.
php artisan make:model Mahasiswa
Lokasi model:
app/Models/Mahasiswa.php
Contoh model:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Mahasiswa extends Model
{
}
—
3. Fillable Field
Fillable digunakan untuk menentukan field yang boleh diinsert menggunakan mass assignment.
Hal ini untuk mencegah field yang tidak diinginkan masuk ke database.
protected $fillable = [
‘nama’,
‘nim’,
‘jurusan’
];
—
4. Primary Key
Laravel menggunakan primary key default bernama id.
Jika nama primary key berbeda dapat diubah pada model.
protected $primaryKey = ‘id_mahasiswa’;
—
5. Timestamp
Laravel otomatis mengelola created_at dan updated_at.
Jika tabel tidak menggunakan timestamp dapat dinonaktifkan.
public $timestamps = false;
—
6. Mengambil Data Menggunakan Model
Ambil semua data
$data = Mahasiswa::all();
Ambil berdasarkan id
$data = Mahasiswa::find(1);
Menggunakan where
$data = Mahasiswa::where(‘jurusan’,’TI’)->get();
—
7. Insert Data
Mahasiswa::create([
‘nama’=>’Budi’,
‘nim’=>’001’,
‘jurusan’=>’TI’
]);
—
8. Update Data
$data = Mahasiswa::find(1);
$data->update([
‘nama’=>’Andi’
]);
—
9. Delete Data
$data = Mahasiswa::find(1);
$data->delete();
—
10. Relasi Antar Model Laravel
Dalam aplikasi nyata, tabel database tidak berdiri sendiri.
Biasanya tabel saling berhubungan satu sama lain.
Laravel menyediakan fitur Eloquent Relationship untuk menghubungkan antar model.
Contoh relasi:
Jurusan
id
nama
Mahasiswa
id
nama
jurusan_id
Artinya:
* Satu jurusan memiliki banyak mahasiswa
* Mahasiswa memiliki satu jurusan
—
11. One To Many
Model Jurusan
public function mahasiswa()
{
return $this->hasMany(Mahasiswa::class,’jurusan_id’);
}
Model Mahasiswa
public function jurusan()
{
return $this->belongsTo(Jurusan::class,’jurusan_id’);
}
Mengambil data
$jurusan = Jurusan::find(1);
$jurusan->mahasiswa;
—
12. Many To One
$mahasiswa = Mahasiswa::find(1);
$mahasiswa->jurusan->nama;
—
13. One To One
Contoh:
User memiliki Profile
Model User
public function profile()
{
return $this->hasOne(Profile::class);
}
Model Profile
public function user()
{
return $this->belongsTo(User::class);
}
—
14. Many To Many
Contoh:
Mahasiswa mengambil banyak matakuliah
Model Mahasiswa
public function matakuliah()
{
return $this->belongsToMany(Matakuliah::class);
}
Model Matakuliah
public function mahasiswa()
{
return $this->belongsToMany(Mahasiswa::class);
}
—
15. Eager Loading
Eager loading digunakan untuk mengambil relasi sekaligus agar query lebih cepat.
Mahasiswa::with(‘jurusan’)->get();
Multiple relasi
Mahasiswa::with(‘jurusan’,’dosen’)->get();
Nested relasi
Mahasiswa::with(‘jurusan.fakultas’)->get();
—
Mahasiswa telah memahami:
- Konsep Model Laravel
- 1 Model = 1 Tabel
- Fillable
- Primary Key
- Timestamp
- CRUD Model
- Relasi Model
- One To One
- One To Many
- Many To Many
- Eager Loading
