Praktikum Laravel: Relationship (Student - Major - Subject)
Tujuan Pembelajaran
- Memahami konsep relationship dalam Laravel
- Mengimplementasikan One-to-Many dan Many-to-Many relationship
- Membuat migration dengan foreign key
- Menggunakan Eloquent relationship untuk query data
- Menampilkan data dengan relationship di view
Struktur Relasi
- Student belongs to Major (Many-to-One)
- Student belongs to many Subjects (Many-to-Many)
- Major has many Students (One-to-Many)
- Subject belongs to many Students (Many-to-Many)
ERD Major dan Student
ERD Student dan Subject
1. Migration
Kita akan membuat migration untuk 4 tabel: majors, students, subjects, dan student_subject.
php artisan make:migration create_majors_table
php artisan make:migration create_students_table
php artisan make:migration create_subjects_table
php artisan make:migration create_student_subject_table
Jalankan migrate
php artisan migrate
2. Model & Relationship
Kita akan membuat 3 model: Major, Student, dan Subject. Setiap model memiliki relasi sebagai berikut:
php artisan make:model Major
php artisan make:model Student
php artisan make:model Subject
3. Seeder Data
Untuk mengisi data awal, buatlah seeder untuk masing-masing model: MajorSeeder, SubjectSeeder, dan StudentSeeder.
php artisan make:model Major
php artisan make:seeder SubjectSeeder
php artisan make:seeder StudentSeeder
Update databaseSeeder
Jalankan seeder dengan perintah:
php artisan db:seed
4. Controller
Kita buat controller resource untuk Student dengan command:
php artisan make:controller StudentController
5. Routing
Tambahkan route resource di file web.php:
update route Web
6. Tampilan (Views)
Gunakan folder resources/views/students. buat folder Layout : layouts/app.blade.php.
Buat file app.blade.php seperti gambar
Buat file index.blade.php seperti gambar
buat file create.blade.php seperti gambar
7. Hasil Tampilan
Halaman List Mahasiswa
Form Tambah Mahasiswa
Tampilan Setelah Menambahkan Data
Halaman Edit Mahasiswa
Tampilan Setelah Mengedit Data
Latihan & Query Relationship
- Tampilkan semua mahasiswa beserta jurusan dan mata kuliahnya
- Jurusan dengan mahasiswa terbanyak
- Mata kuliah yang diambil oleh mahasiswa tertentu
- Total SKS tiap mahasiswa
a. Membuat file detail.blade.php
b. Update Route/web.php
update dengan kode dibawah supaya terbaca file detail.blade
c. Tambahkan function Detail di StudentControler
Tampilan Detail Mahasiswa
Kesimpulan
- Relationship Laravel membantu mengelola relasi antar tabel dengan mudah
- One-to-Many dan Many-to-Many diterapkan menggunakan Eloquent
- Data ditampilkan dinamis di view menggunakan Blade
- Meningkatkan efisiensi query dengan eager loading