Laporan Praktikum 8: Laravel Relationship
Pendahuluan
Praktikum ini bertujuan untuk memberikan pemahaman mendalam mengenai konsep relasi antar-tabel (relationship) di dalam framework Laravel, serta mengimplementasikannya secara nyata melalui hubungan One-to-Many dan Many-to-Many. Selain memetakan hubungan antar-objek di tingkat basis data menggunakan migration yang dilengkapi dengan foreign key, praktikum ini juga melatih penggunaan fitur Eloquent Relationship untuk melakukan query data secara efisien. Pada tahap akhir, mahasiswa diharapkan mampu mengintegrasikan alur data tersebut untuk kemudian menampilkan informasi yang saling berelasi secara dinamis ke dalam halaman antarmuka (view).
Repository GithubLangkah Kerja
Pertama kita buat migration untuk tabel major, dengan perintah
php artisan make:migration create_majors_table.
Lalu kita buka file migration yang sudah dibuat, lalu kita
buat field-fieldnya, disini aku membuat field id, name, dan
timestamps.
Selanjutnya kita buat migration untuk tabel student, dengan
perintah
php artisan make:migration create_students_table.
Lalu kita buka file migration yang sudah dibuat, lalu kita
buat field-fieldnya, disini aku membuat field id, name,
major_id, dan timestamps. Disini kita buat field major_id
sebagai foreign key yang mengarah ke tabel majors.
Selanjutnya membuat migration untuk tabel subject, dengan
perintah
php artisan make:migration create_subjects_table.
Lalu kita buka file migration yang sudah dibuat, lalu kita
buat field-fieldnya.
Selanjutnya kita buat migration untuk tabel pivot
student_subject, dengan perintah
php artisan make:migration
create_student_subject_table. Lalu kita buka file migration yang sudah dibuat, lalu kita
buat field-fieldnya, disini aku membuat field student_id dan
subject_id sebagai foreign key yang mengarah ke tabel students
dan subjects.
Terakhir kita jalankan perintah
php artisan migrate untuk menjalankan migration
dan membuat tabel di database.
Buat model untuk tabel major, student, dan subject dengan
perintah
php artisan make:model major, student, subject.
Lalu kita buka file model yang sudah dibuat, lalu kita buat
function untuk mendefinisikan relationship antar model. Lalu
kita buat function agar masing masing model dapat mengakses
data dari model lain yang berelasi dengan model tersebut.
Pertama, seeder untuk tabel major, dengan perintah
php artisan make:seeder MajorSeeder. Lalu
tambahkan code pada foto berikut di function run() untuk
mengisi data sample pada tabel major.
Selanjutnya, seeder untuk tabel subject, dengan perintah
php artisan make:seeder SubjectSeeder. Lalu
tambahkan code pada foto berikut di function run() untuk
mengisi data sample pada tabel subject.
Selanjutnya, seeder untuk tabel student, dengan perintah
php artisan make:seeder StudentSeeder. Lalu
tambahkan code pada foto berikut di function run() untuk
mengisi data sample pada tabel student.
Selanjutnya, kita melakukan update pada file
DatabaseSeeder.php untuk memanggil seeder yang sudah dibuat,
lalu kita jalankan perintah
php artisan db:seed untuk menjalankan seeder dan
mengisi data sample ke dalam tabel di database.
Proses pembuatan controller diawali dengan menjalankan perintah php artisan make:controller StudentController pada terminal untuk membuat sebuah resource controller khusus bagi entitas Student. Setelah berkas berhasil digenerasikan, beberapa fungsi operasi CRUD (Create, Read, Update, Delete) ditambahkan ke dalam StudentController guna mengelola data mahasiswa secara terstruktur. Fungsi-fungsi tersebut meliputi index() untuk menampilkan daftar keseluruhan mahasiswa, show() untuk menyajikan detail informasi dari seorang mahasiswa secara spesifik, serta create() dan store() yang masing-masing berfungsi untuk menampilkan formulir dan menyimpan data mahasiswa baru ke basis data. Sementara itu, untuk proses perubahan data, fungsi edit() digunakan untuk menampilkan formulir pengeditan dan update() untuk memperbarui data yang telah diubah, yang kemudian diakhiri dengan fungsi destroy() untuk menangani aksi penghapusan data mahasiswa dari sistem.
Tambahkan route untuk resource student pada file web.php
dengan perintah
Route::resource('students', StudentController::class).
Kita buat view untuk layout utama, index, create.
Berikut adalah hasil dari project yang kita buat.
Kita diminta untuk membuat query untuk menampilkan: 1.Semua mahasiswa beserta jurusan dan mata kuliahnya; 2.Jurusan yang memiliki mahasiswa terbanyak; 3.Mata kuliah yang diambil oleh mahasiswa tertentu; 4.Total SKS yang diambil setiap mahasiswa. Disini aku membuat function pada studentcontroller untuk setiap nomor latihan. juga kita buatkan route dan view agar function tersebut dapat diakses melalui url.
Latihan 1,
Latihan 2,
Latihan 3,
Latihan 4,