Langkah ini bertujuan untuk mendefinisikan dan membuat struktur tabel di dalam database menggunakan sistem migrasi Laravel. migrations.
majors: Perintah php artisan make:migration create_majors_table dijalankan untuk membuat file migrasi. Di dalam file ini, didefinisikan skema tabel. majors yang memiliki kolom id (primary key), name (string), serta timestamps untuk data waktu.
students: File migrasi untuk tabel students dibuat. Tabel ini memiliki kolom id, nim (unique key), name, address, dan major_id sebagai foreign key yang terhubung ke tabel majors. Relasi ini diatur agar data mahasiswa ikut terhapus jika data jurusan terkait dihapus (onDelete('cascade')).
subjects: File migrasi dibuat untuk tabel subjects. Skemanya berisi kolom id, name, dan sks (integer) untuk menyimpan Satuan Kredit Semester.
student_subject: Sebuah tabel pivot student_subject dibuat untuk menangani relasi many-to-many antara mahasiswa dan mata kuliah. Tabel ini berisi student_id dan subject_id sebagai foreign key. Kombinasi kedua kolom ini juga dibuat unik untuk mencegah duplikasi data.
Jalankan Migration: Perintah php artisan migrate dieksekusi untuk menerapkan semua skema yang telah dibuat menjadi tabel-tabel nyata di dalam database.
Pada langkah ini, model Eloquent dibuat untuk setiap tabel utama agar dapat berinteraksi dengan database secara lebih mudah dan intuitif, sekaligus mendefinisikan relasi antar model.
Major: Model Major dibuat. Di dalamnya, didefinisikan relasi One-to-Many melalui fungsi students(), yang menyatakan bahwa satu jurusan dapat memiliki banyak mahasiswa (hasMany).
Student: Model Student dibuat. Model ini memiliki dua relasi yaitu Relasi Many-to-One ke model Major melalui fungsi major(), yang menyatakan bahwa seorang mahasiswa milik satu jurusan (belongsTo). Kemudian Relasi Many-to-Many ke model Subject melalui fungsi subjects(), yang menyatakan bahwa seorang mahasiswa dapat mengambil banyak mata kuliah (belongsToMany).
Subject: Model Subject dibuat. Di dalamnya, didefinisikan relasi Many-to-Many ke model Student melalui fungsi students(), yang menandakan satu mata kuliah dapat diambil oleh banyak mahasiswa (belongsToMany).
Langkah ini bertujuan untuk mengisi tabel-tabel yang sudah dibuat dengan data awal (sampel) untuk keperluan pengembangan dan pengujian.
Major: MajorSeeder dibuat untuk mengisi tabel majors dengan beberapa data jurusan seperti 'Teknik Informatika' dan 'Sistem Informasi'.
Subject: SubjectSeeder dibuat untuk mengisi tabel subjects dengan data mata kuliah beserta SKS-nya, contohnya 'Pemrograman Web' dan 'Database'.
Student: StudentSeeder dibuat untuk menambahkan data mahasiswa. Untuk setiap mahasiswa yang dibuat, seeder ini juga secara acak memilih 2 hingga 4 mata kuliah untuk dihubungkan ke mahasiswa tersebut menggunakan metode attach().
DatabaseSeeder: File utama DatabaseSeeder.php dimodifikasi untuk memanggil ketiga seeder yang telah dibuat (MajorSeeder, SubjectSeeder, dan StudentSeeder) secara berurutan.
Jalankan Seeder: Perintah php artisan db:seed dijalankan untuk mengeksekusi DatabaseSeeder, yang kemudian mengisi semua tabel dengan data sampel
php artisan make:controller StudentController
{{-- resources/views/layouts/app.blade.php --}}
{{-- resources/views/students/index.blade.php --}}
{{-- resources/views/students/create.blade.php --}}