Laravel merupakan framework PHP berbasis MVC (Model View Controller) yang digunakan untuk mempermudah proses pengembangan aplikasi web. Laravel menyediakan berbagai fitur modern seperti routing, migration, seeding, middleware, authentication, dan Eloquent ORM.
Salah satu fitur penting pada Laravel yaitu Eloquent ORM (Object Relational Mapping). Eloquent ORM memungkinkan developer melakukan manipulasi database menggunakan object dan model tanpa harus menulis query SQL secara manual.
Relationship pada Laravel digunakan untuk menghubungkan tabel-tabel yang memiliki keterkaitan di dalam database. Relationship mempermudah proses pengambilan data yang saling berhubungan antar tabel.
Relationship One-to-Many digunakan ketika satu data dapat memiliki banyak data lain. Contohnya satu jurusan dapat memiliki banyak mahasiswa, tetapi satu mahasiswa hanya memiliki satu jurusan.
Relationship Many-to-Many digunakan ketika dua tabel dapat saling memiliki banyak data. Contohnya mahasiswa dapat mengambil banyak mata kuliah dan satu mata kuliah juga dapat diambil oleh banyak mahasiswa.
Laravel menyediakan beberapa method relationship seperti belongsTo(), hasMany(), dan belongsToMany() yang digunakan untuk menghubungkan model-model pada database.
Migration pada Laravel digunakan untuk membuat dan mengelola struktur database menggunakan kode program. Dengan migration, struktur database dapat dibuat, diubah, dan dikontrol dengan lebih mudah serta rapi.
Seeder digunakan untuk mengisi data awal ke database secara otomatis. Seeder sangat membantu ketika developer ingin menambahkan data dummy atau data default pada aplikasi Laravel.
Blade Template Engine merupakan fitur template Laravel yang digunakan untuk membuat tampilan website menjadi lebih terstruktur, dinamis, dan mudah dikelola.
php artisan make:model Major -m php artisan make:model Student -m php artisan make:model Subject -m
Opsi -m digunakan agar Laravel otomatis membuat migration bersamaan dengan model. Migration nantinya digunakan untuk membuat struktur tabel pada database.
Setelah command dijalankan, Laravel otomatis membuat file model pada folder app/Models dan file migration pada folder database/migrations.
Schema::create('majors', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->timestamps();
});
Tabel majors digunakan untuk menyimpan data jurusan mahasiswa. Field name digunakan untuk menyimpan nama jurusan.
Schema::create('students', function (Blueprint $table) {
$table->id();
$table->string('nim')->unique();
$table->string('name');
$table->text('address');
$table->foreignId('major_id')->constrained();
$table->timestamps();
});
Pada tabel students terdapat foreign key major_id yang digunakan untuk menghubungkan mahasiswa dengan tabel jurusan.
Fungsi constrained() digunakan agar Laravel otomatis membuat foreign key ke tabel majors.
Schema::create('subjects', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->integer('sks');
$table->timestamps();
});
Tabel subjects digunakan untuk menyimpan data mata kuliah dan jumlah SKS.
php artisan make:migration create_student_subject_table
Pivot table digunakan karena satu mahasiswa dapat mengambil banyak mata kuliah dan satu mata kuliah dapat diambil oleh banyak mahasiswa.
Schema::create('student_subject', function (Blueprint $table) {
$table->id();
$table->foreignId('student_id')->constrained();
$table->foreignId('subject_id')->constrained();
$table->timestamps();
});
Tabel student_subject digunakan untuk menyimpan relasi antara mahasiswa dan mata kuliah.
php artisan migrate
Setelah migration berhasil dijalankan, tabel majors, students, subjects, dan student_subject akan muncul pada database Laravel.
php artisan make:model Major
php artisan make:model Student
php artisan make:model Subject
Model Major digunakan untuk tabel jurusan, model Student digunakan untuk tabel mahasiswa, dan model Subject digunakan untuk tabel mata kuliah.
File model otomatis dibuat pada folder app/Models. Model nantinya digunakan untuk melakukan query database menggunakan Eloquent ORM Laravel.
php artisan make:seeder MajorSeeder php artisan make:seeder StudentSeeder php artisan make:seeder SubjectSeeder
Seeder mempermudah proses pengisian data awal pada database tanpa harus menginput data secara manual.
$this->call([
MajorSeeder::class,
SubjectSeeder::class,
StudentSeeder::class,
]);
DatabaseSeeder berfungsi untuk menjalankan seluruh seeder yang ada pada project Laravel.
php artisan db:seed
Setelah proses seeding selesai, data jurusan, mahasiswa, dan mata kuliah berhasil tersimpan pada database.
public function major()
{
return $this->belongsTo(Major::class);
}
public function subjects()
{
return $this->belongsToMany(Subject::class);
}
Method belongsTo() digunakan untuk menunjukkan bahwa satu mahasiswa hanya memiliki satu jurusan.
Sedangkan belongsToMany() digunakan karena mahasiswa dapat mengambil banyak mata kuliah.
$students = Student::with(['major', 'subjects'])->get();
Query tersebut digunakan untuk mengambil seluruh data mahasiswa beserta jurusan dan mata kuliah.
Method with() digunakan untuk eager loading agar query database menjadi lebih efisien.
Route::resource('students', StudentController::class);
Route resource otomatis membuat route CRUD seperti create, store, edit, update, dan delete.
Layout digunakan sebagai template utama seluruh halaman Laravel agar tampilan lebih rapi dan konsisten.
Data mahasiswa ditampilkan menggunakan tabel Bootstrap agar tampilan lebih rapi.
Form terdiri dari NIM, nama, alamat, jurusan, dan mata kuliah mahasiswa.
php artisan serve
Setelah command dijalankan, Laravel akan memberikan localhost yang dapat diakses melalui browser.
http://127.0.0.1:8000/students
Halaman tersebut menampilkan data mahasiswa, jurusan, mata kuliah, dan total SKS menggunakan relationship Laravel.
Pada challenge praktikum ini ditambahkan fitur jadwal mata kuliah pada setiap subject.
Kolom schedule ditambahkan pada tabel subjects menggunakan migration Laravel.
$table->string('schedule');
Jadwal mata kuliah kemudian ditambahkan pada SubjectSeeder.
[
'name' => 'Pemrograman Web',
'sks' => 3,
'schedule' => 'Senin 08:00'
]
Jadwal mata kuliah ditampilkan pada halaman student menggunakan Blade Template.
@foreach($student->subjects as $subject)
<div>
{{ $subject->name }}
<br>
<small>
{{ $subject->schedule }}
</small>
</div>
@endforeach
Setelah challenge selesai dikerjakan, jadwal mata kuliah berhasil tampil pada halaman student.
$students = Student::with(['major', 'subjects'])->get();
Query tersebut digunakan untuk mengambil seluruh data mahasiswa beserta relasi jurusan dan mata kuliahnya.
$major = Major::withCount('students')
->orderBy('students_count', 'desc')
->first();
Query tersebut digunakan untuk menghitung jumlah mahasiswa pada setiap jurusan menggunakan withCount().
$student = Student::with('subjects')->find(1);
Query tersebut digunakan untuk mengambil data mata kuliah dari mahasiswa tertentu.
$totalSks = $student->subjects->sum('sks');
Query tersebut digunakan untuk menghitung total SKS yang dimiliki mahasiswa berdasarkan mata kuliah yang diambil.
Berdasarkan praktikum yang telah dilakukan, Laravel berhasil digunakan untuk membuat relationship database menggunakan Eloquent ORM.
Relationship One-to-Many dan Many-to-Many berhasil diterapkan pada tabel mahasiswa, jurusan, dan mata kuliah.
Data mahasiswa berhasil ditampilkan bersama jurusan, mata kuliah, jadwal mata kuliah, dan total SKS menggunakan Blade Template Laravel.
Penggunaan Eloquent ORM mempermudah proses query database karena data relationship dapat diakses langsung melalui model Laravel.
Dari praktikum yang telah dilakukan dapat disimpulkan bahwa Laravel mempermudah proses pengembangan aplikasi web menggunakan konsep MVC dan Eloquent ORM.
Relationship database seperti One-to-Many dan Many-to-Many dapat diterapkan dengan mudah menggunakan Laravel Relationship.
Pada praktikum ini berhasil dibuat aplikasi CRUD mahasiswa menggunakan relationship database, pivot table, dan Blade Template Laravel.