Eloquent Relationship: Students, Majors, and Subject

Mata Kuliah Desain Web

Selesai

Setelah melakukan praktikum ini, mahasiswa diharapkan mampu:

  1. Memahami dan mengimplementasikan Eloquent Relationship pada Laravel
  2. Menerapkan konsep One-to-Many dan Many-to-Many relationship
  3. Membuat migration untuk relasi antar tabel
  4. Mengelola Subject (mata kuliah) menggunakan CRUD dalam relasi
  5. Menyajikan data yang terorganisir dari banyak tabel
  • Komputer / Laptop
  • XAMPP
  • Visual Studio Code / IDE
  • Composer, Git, Node.js, NPM

Dalam melakukan proses join dan relationship pada Laravel, perlu diketahui beberapa hal sebagai berikut:

Student belongsTo Major — Satu Student punya Satu Major (One-to-One)
Student belongsToMany Subjects — Satu Student boleh ambil banyak Subject (Many-to-Many)
Major hasMany Students — Satu Major punya banyak Student (One-to-Many)
Subject belongsToMany Mahasiswas — Relasi pivot balik dari Subject
1 N 1 N 1 N majors id bigint · PK nama varchar mahasiswas id bigint · PK nama varchar nim varchar major_id bigint · FK email varchar student_subject mahasiswa_id FK subject_id FK subjects id bigint · PK nama varchar kode varchar sks integer PK = Primary Key FK = Foreign Key │ = 1 (one) ⪤ = N (many)

Langkah 1: Membuat Migration

A. Migration untuk tabel majors

php artisan make:migration create_majors_table
Membuat Migration Table Major

Gambar 1. Membuat Migration Table Major

Kode Migration Majors

Gambar 2. Kode Migration Tabel Majors

B. Migration untuk tabel students

php artisan make:migration create_students_table
Membuat Migration Students

Gambar 3. Membuat Migration Tabel Students

Kode Migration Students

Gambar 4. Kode Migration Tabel Students

C. Migration untuk tabel subjects

php artisan make:migration create_subjects_table
Membuat Migration Subjects

Gambar 5. Membuat Migration Tabel Subjects

Kode Migration Subjects

Gambar 6. Kode Migration Tabel Subjects

D. Migration untuk tabel pivot student_subject

php artisan make:migration create_student_subject_table
Membuat Migration Student Subject

Gambar 7. Membuat Migration Tabel Pivot Student_Subject

Kode Migration Student Subject

Gambar 8. Kode Migration Tabel Pivot Student_Subject

Jalankan Migration

php artisan migrate
Jalankan Migration

Gambar 9. Menjalankan Migration

Langkah 2: Membuat Model dengan Relationship

A. Model Major

php artisan make:model Major
Membuat Model Major

Gambar 10. Membuat Model Major

Kode Model Major

Gambar 11. Kode Model Major dengan Relasi One-to-Many

B. Model Student

php artisan make:model Student
Membuat Model Student

Gambar 12. Membuat Model Student

Kode Model Student

Gambar 13. Kode Model Student dengan Relasi belongsTo dan belongsToMany

C. Model Subject

php artisan make:model Subject
Membuat Model Subject

Gambar 14. Membuat Model Subject

Kode Model Subject

Gambar 15. Kode Model Subject dengan Relasi belongsToMany

Langkah 3: Seeder untuk Data Sample

A. Seeder untuk Major

php artisan make:seeder MajorSeeder
Membuat MajorSeeder

Gambar 16. Membuat MajorSeeder

Kode MajorSeeder

Gambar 17. Kode MajorSeeder dengan Data Jurusan

B. Seeder untuk Subject

php artisan make:seeder SubjectSeeder
Membuat SubjectSeeder

Gambar 18. Membuat SubjectSeeder

Kode SubjectSeeder

Gambar 19. Kode SubjectSeeder dengan Data Mata Kuliah

C. Seeder untuk Student

php artisan make:seeder StudentSeeder
Membuat StudentSeeder

Gambar 20. Membuat StudentSeeder

Kode StudentSeeder

Gambar 21. Kode StudentSeeder dengan Assign Random Subjects

D. Update DatabaseSeeder

Update DatabaseSeeder

Gambar 22. Kode DatabaseSeeder Memanggil Semua Seeder

Jalankan Seeder

php artisan db:seed
Jalankan Seeder

Gambar 23. Menjalankan Seeder

Langkah 4: Membuat Controller

A. StudentController

php artisan make:controller StudentController
Membuat StudentController

Gambar 24. Membuat StudentController

Kode StudentController

Gambar 25. Kode StudentController dengan Method CRUD

Langkah 5: Membuat Routes

Routes bagian 1 Routes bagian 2

Gambar 26. Konfigurasi Route Resource Students

Langkah 6: Membuat Views

A. Layout utama {{-- resources/views/layouts/app.blade.php --}}

Layout App

Gambar 27. Kode Layout Utama (app.blade.php)

B. Index Students {{-- resources/views/students/index.blade.php --}}

View Index Students

Gambar 28. Kode View Index Daftar Mahasiswa

C. Create Student {{-- resources/views/students/create.blade.php --}}

View Create Student

Gambar 29. Kode View Form Tambah Mahasiswa

D. Edit Student {{-- resources/views/students/edit.blade.php --}}

View Edit Student

Gambar 30. Kode View Form Edit Data Mahasiswa

E. Detail Student {{-- resources/views/students/show.blade.php --}}

View Detail Student

Gambar 31. Kode View Detail Mahasiswa

Hasil

Daftar Mahasiswa

Gambar 32. Daftar Mahasiswa

Tambah Mahasiswa

Gambar 33. Tambah Mahasiswa

Detail Mahasiswa

Gambar 34. Detail Mahasiswa

Edit Data Mahasiswa

Gambar 35. Edit Data Mahasiswa

Hapus Data Mahasiswa

Gambar 36. Hapus Data Mahasiswa

1. Membuat Model

Membuat Model Jadwal

Gambar 37. Kode Model Jadwal dengan Relasi ke Subject

2. Membuat Controller

Membuat Controller Jadwal

Gambar 38. Kode JadwalController

3. Membuat Seeder

Membuat Seeder Jadwal

Gambar 39. Kode JadwalSeeder dengan Data Jadwal Mata Kuliah

4. Membuat View

Membuat View Jadwal

Gambar 40. Kode View Tampilan Jadwal Mata Kuliah

Hasil

Hasil Jadwal

Gambar 41. Hasil Halaman Jadwal Mata Kuliah

Jadwal terintegrasi ke Detail Mahasiswa

Gambar 42. Jadwal Mata Kuliah terintegrasi ke Detail Mahasiswa

Dalam modul ini, mahasiswa telah mempelajari:

  1. Cara membuat relationship One-to-Many dan Many-to-Many di Laravel
  2. Implementasi foreign key dan pivot table
  3. Penggunaan Eloquent relationship untuk query data
  4. Best practices dalam menggunakan eager loading
  5. Cara menampilkan data relationship di view

Relationship adalah konsep fundamental dalam pengembangan aplikasi web dengan database. Pemahaman yang baik tentang relationship akan membantu dalam membangun aplikasi yang efisien dan mudah di-maintain.

Mata KuliahDesain Web
Pertemuan8
NamaAlfaris Aulia Rahman
NIM2411533006
StatusSelesai