Laravel Relationship: Student, Major, dan Subject
Author: Sherly Ananda Putri - 2311532017
Praktikum ini bertujuan untuk memahami implementasi relasi One-to-Many dan Many-to-Many di Laravel dengan studi kasus sistem akademik sederhana.
Tools yang saya gunakan:
- Komputer/Laptop
- XAMPP: Sebagai local web server untuk menjalankan PHP dan MySQL di komputer lokal.
- Visual Studio Code: Sebagai code editor untuk menulis skrip PHP dan HTML.
- Composer, Git, Node JS, NPM: Untuk manajemen paket dan dependensi.
Fitur-fitur pada Laravel
1. Eloquent ORM (Object-Relational Mapping):
Memudahkan operasi database dengan pendekatan OOP.
2. Blade Templating Engine:
Templating engine yang efisien dan bersih.
3. Artisan Console:
Command-line interface (CLI) yang disertakan dengan Laravel.
4. Routing:
Sistem perutean yang fleksibel memungkinkan untuk mendefinisikan URL aplikasi dan mengaitkannya dengan controller atau closure functions.
5. Middleware:
Digunakan untuk autentikasi, logging, validasi, dan tugas-tugas lain sebelum atau sesudah request ditangani oleh aplikasi.
6. Form Request Validation:
Memudahkan proses validasi data yang dikirim melalui form.
7. Security:
Fitur keamanan laravel.
8. Authentication & Authorization:
Menyediakan sistem otentikasi (login, registrasi, lupa kata sandi) dan otorisasi (hak akses pengguna) yang mudah diimplementasikan.
9. Testing:
Dukungan bawaan untuk berbagai jenis pengujian, termasuk unit testing, integration testing, dan end-to-end testing.
10. Queues:
Sistem antrian yang memungkinkan untuk menunda tugas-tugas yang memakan waktu
11. Caching:
Mendukung berbagai sistem caching (seperti Redis, Memcached, file) untuk meningkatkan performa aplikasi dengan menyimpan data yang sering diakses dalam memori.
12. Events & Listeners:
Implementasi dari pola Observer.
13. Notifications:
Memudahkan pengiriman notifikasi ke berbagai saluran, seperti email, SMS, database, atau layanan pihak ketiga.
14. Broadcasting:
Memungkinkan melakukan siaran event secara real-time melalui WebSockets.
15. Task Scheduling:
Memungkinkan menjadwalkan tugas-tugas cron menggunakan sintaks yang ekspresif dalam kode PHP.
16. Passport (OAuth2 Server):
Paket resmi untuk mengimplementasikan otentikasi OAuth2.
17. Sanctum (API Authentication):
Paket ringan untuk mengimplementasikan sistem otentikasi berbasis token untuk Single-Page Applications (SPAs), mobile applications, dan simple APIs.
18. Socialite (Social Authentication):
Memudahkan integrasi otentikasi dengan berbagai penyedia layanan OAuth seperti Facebook, Twitter, Google, dan lainnya.
19. Filesystem:
Abstraksi untuk berinteraksi dengan berbagai sistem penyimpanan file, baik lokal maupun cloud (seperti Amazon S3 atau Google Cloud Storage).
20. Mail:
Memudahkan pengiriman email dengan dukungan untuk berbagai driver seperti SMTP, Mailgun, dan Amazon SES.
21. Pusher (Realtime Services):
Untuk menambahkanfitur realtime ke aplikasi.
22. Localization: (Realtime Services):
Memudahkan pembuatan aplikasi multibahasa dengan fitur untuk mengelola terjemahan.
23. Packages:
Memungkinkan dengan mudah menambahkan fungsionalitas tambahan ke aplikasi.
Langkah-langkah:
1. Membuat Migration:
Buat tabel
major ,
students ,
subjects dan
student_subject menggunakan perintah artisan dan tambahkan relasi menggunakan
foreignId dan
constrained() .
-
Contoh migration dengan foreign key dan relasi untuk tabel Majors:
-
Contoh migration dengan foreign key dan relasi untuk tabel Students:
-
Contoh migration dengan foreign key dan relasi untuk tabel Subjects:
-
Contoh migration dengan foreign key dan relasi untuk tabel Student_Subject.
2. Jalankan migration:
Jalankan semua migration dengan perintah
php artisan serve untuk membuat struktul tabel di database.
3. Membuat Model:
Buat model
major ,
Student , dan
Subject serta definisikan relasi Eloquentnya (hasMany, belongsTo, belongsToMany)
- Model Major:
- Model Student:
- Model Subject:
4. Membuat Seeder
Tambahkan data dummy ke tabel
Major ,
Students , dan
Subjects
dengan membuat file seeder masing-masing dan panggil relasi pivot pada student ke subject.
-
Seeder untuk tabel Major:
-
Seeder untuk tabel Student:
-
Seeder untuk tabel Subject:
5. Membuat Seeder untuk Database:
Update file
DatabaseSeeder.php menjadi seperti berikut:
6. Menjalankan Seeder:
Jalankan
php artisan db:seed di bash untuk menjalankan seeder.
7. Membuat Controller:
Tambahkan route resource
Route::resource('students', StudentController::class);
di file
web.php.
8. Membuat Route:
Gunakan perintah
php artisan make:controller StudentController
dan buat method untuk CRUD data mahasiswa serta menampilkan relasi dengan eager loading.
9. Membuat View:
Buat view menggunakan Blade di folder
resources/views/students
dan tampilkan data mahasiswa beserta jurusan dan mata kuliahnya di
index.blade.php
-
app.blade.php:
-
index.blade.php
create.blade.php
Tampilan data mahasiswa dengan jurursan dan mata kuliah di blade view:
Demikian Laporan 5 Praktikum Pemograman Web pertemuan 10 ini. Semoga Bermanfaat.