Laravel · Bab 11
Proyek Akhir: Tantangan Mandiri
Dua tantangan untuk menguji pemahamanmu — menambah tabel Supplier ke Smart Retail App, lalu membangun proyek orisinal minimal tiga tabel dengan autentikasi.
Setelah Lab 1–7, kamu sudah membangun satu aplikasi Laravel utuh. Bab ini berisi dua tantangan tanpa panduan langkah demi langkah: memperluas Smart Retail App, lalu membangun aplikasi orisinalmu sendiri.
Tantangan 1: Ekspansi Tabel Master Supplier
Di dunia nyata, stok produk diisi lewat kiriman rekanan dagang (Supplier). Perluas sistem Retail Store agar memiliki tabel master ke-4:
- Buat Model & migrasi Supplier. Nama tabel
suppliers, dengan kolomid,name(string),phone(string),address(text), dantimestamps. - Modifikasi tabel
products. Buat file migrasi baru untuk menambahkan kolom foreign keysupplier_idke tabelproducts. Jangan mengubah migrasi lama yang sudah dijalankan. - Definisikan relasi Eloquent. Class
Suppliermemiliki relasihasManykeProduct, dan ClassProductmemiliki relasibelongsTokeSupplier. - Perbarui form antarmuka. Tambahkan dropdown
<select name="supplier_id">pada form tambah dan edit produk, lalu tampilkan nama supplier di tabel katalog (products/index.blade.php).
Tantangan 2: Proyek Mandiri
Pilih salah satu topik berikut, atau usulkan skenario bisnis kontekstual lain. Bangun aplikasi web Laravel CRUD berbasis relasi minimal 3 tabel (2 master, 1 transaksi) dan dilengkapi sistem Autentikasi pengguna.
Opsi A: Motorcycle Workshop System
Sistem manajemen bengkel sepeda motor.
- Master 1:
customers(name,license_plate,phone_number) - Master 2:
spareparts(part_code,name,price,stock) - Transaksi:
service_details(customer_id,sparepart_id,service_fee,total_price,complaint,service_date)
Opsi B: School Lab Equipment Loan System
Sistem peminjaman inventaris lab komputer.
- Master 1:
students(student_id_number,name,classroom) - Master 2:
equipments(equipment_code,name,condition,stock) - Transaksi:
loans(student_id,equipment_id,quantity,loan_date,return_status)
Opsi C: Outpatient Clinic System
Sistem klinik rawat jalan mini.
- Master 1:
patients(medical_record_number,name,birth_date,address) - Master 2:
doctors(employee_id,name,specialization) - Transaksi:
medical_records(patient_id,doctor_id,diagnosis,consultation_fee,examination_date)