Laprak 7 — Migration, Seeding, Routing, Model, Controller, View

Pemrograman Web Pertemuan 7 Zahran Azaria Anvaya - 2411531005

I. Tujuan Praktikum

Setelah menyelesaikan praktikum ini, mahasiswa diharapkan mampu:

  • Memahami dan menggunakan Migration untuk membuat dan mengelola struktur database
  • Menggunakan Seeding untuk mengisi data awal ke database
  • Memahami jenis-jenis Routing pada Laravel
  • Membuat Model dan menggunakan Eloquent ORM untuk interaksi data
  • Membuat Controller sebagai penghubung antara Model dan View
  • Membuat View menggunakan Blade Template Engine
  • Mengimplementasikan keseluruhan konsep MVC dalam satu alur aplikasi

II. Dasar Teori

Laravel menggunakan pola arsitektur MVC (Model-View-Controller) yang memisahkan logika aplikasi menjadi tiga komponen utama. Model bertugas mengelola data dan interaksi dengan database menggunakan Eloquent ORM. View bertanggung jawab menampilkan antarmuka kepada pengguna menggunakan Blade Template Engine. Controller berfungsi sebagai penghubung antara Model dan View, memproses request dari pengguna.

Migration adalah fitur Laravel untuk membuat dan mengelola struktur database menggunakan kode program, sehingga memudahkan versioning dan kolaborasi antar developer. Seeding digunakan untuk mengisi data awal ke database, sangat berguna untuk pengujian dan pembuatan data dummy.


III. Alat dan Bahan

  • Laptop / Komputer
  • XAMPP
  • Visual Studio Code
  • Browser (Google Chrome / Firefox)
  • Composer, Node.js, GIT, NPM
  • Project Laravel (dari praktikum sebelumnya)

IV. Langkah - Langkah Praktikum

1 Konfigurasi Database

Buka file .env pada root project Laravel, kemudian ubah konfigurasi database sesuai dengan pengaturan MySQL yang digunakan.

Konfigurasi database di file .env
Gambar 1 – Konfigurasi Database di File .env

Pastikan database praktikum_laravel sudah dibuat sebelum melanjutkan ke langkah berikutnya.

2 Membuat Migration Tabel Products

Migration digunakan untuk membuat dan mengelola struktur database menggunakan kode program. Jalankan perintah php artisan make:migration create_products_table di terminal untuk membuat file migration.

Membuat migration tabel products
Gambar 2 – Membuat Migration Tabel Products

File migration berada pada folder database/migrations. Buka file tersebut dan tambahkan kolom name, price, dan description pada method up().

Isi file migration products
Gambar 3 – Isi File Migration Products

Jalankan migration menggunakan perintah php artisan migrate. Setelah dijalankan, maka tabel products akan terbentuk secara otomatis.

Hasil php artisan migrate
Gambar 4 – Hasil php artisan migrate

Untuk mengatasi error tersebut, jalankan perintah php artisan migrate:fresh yang berfungsi menghapus seluruh tabel lama dan menjalankan ulang semua migration dari awal, sehingga tabel products berhasil terbentuk.

Hasil php artisan migrate:fresh
Gambar 5 – Hasil php artisan migrate:fresh
3 Membuat Seeder

Seeding digunakan untuk mengisi data awal ke database. Jalankan perintah php artisan make:seeder ProductSeeder untuk membuat file seeder.

Membuat ProductSeeder
Gambar 6 – Membuat ProductSeeder

Buka file ProductSeeder.php di folder database/seeders, kemudian isi dengan data produk awal seperti Laptop dan Mouse.

Isi file ProductSeeder.php
Gambar 7 – Isi File ProductSeeder.php

Daftarkan seeder pada file DatabaseSeeder.php dengan menambahkan $this->call(ProductSeeder::class).

Mendaftarkan seeder di DatabaseSeeder.php
Gambar 8 – Mendaftarkan seeder di DatabaseSeeder.php

Jika ingin menjalankan migration dan seeding bersamaan jalankan perintah php artisan migrate:fresh --seed . Setelah dijalankan, data produk akan masuk ke dalam tabel products di database.

Menjalankan migration dan seeding bersamaan
Gambar 9 – Menjalankan migration dan seeding bersamaan
4 Membuat Model Product

Model digunakan untuk berinteraksi dengan database menggunakan Eloquent ORM. Buat model product dengan perintah php artisan make:model Product di terminal.

Membuat Model Product.php
Gambar 10 – Membuat Model Product.php

Buka file app/Models/Product.php dan tambahkan property $fillable untuk menentukan kolom yang dapat diisi.

Isi file Product.php
Gambar 11 – Isi File Product.php
5 Membuat Controller

Controller bertugas mengatur logika aplikasi dan menjadi penghubung antara Model dan View. Jalankan perintah php artisan make:controller ProductController di terminal.

Membuat ProductController
Gambar 12 – Membuat ProductController

Buka file ProductController.php di folder app/Http/Controllers, kemudian buat method index() yang mengambil semua data produk menggunakan Product::all() dan mengirimkannya ke view.

Isi file ProductController.php
Gambar 13 – Isi File ProductController.php
6 Mengatur Routing

Routing menentukan URL dan respon yang diberikan aplikasi. Buka file routes/web.php dan tambahkan route /products yang mengarah ke method index pada ProductController.

Isi file web.php
Gambar 14 – Isi File routes/web.php
7 Membuat View dengan Blade Layout

Pertama, buat file layout utama pada resources/views/layouts/app.blade.php. Blade Layout memungkinkan kerangka HTML yang sama digunakan ulang di banyak halaman tanpa penulisan ulang.

Isi file app.blade.php
Gambar 15 – Isi File layouts/app.blade.php

Kemudian buat file resources/views/products.blade.php dan ubah isinya agar menggunakan layout dengan @extends serta menampilkan data produk menggunakan @foreach. Karena data berasal dari database, akses propertinya menggunakan $product->name.

Isi file products.blade.php
Gambar 16 – Isi File products.blade.php
8 Menjalankan dan Menguji Aplikasi

Pastikan server Laravel sudah berjalan dengan perintah php artisan serve, kemudian buka browser dan akses http://127.0.0.1:8000/products.

Hasil akhir di browser
Gambar 17 – Tampilan Halaman /products di Browser

Halaman menampilkan judul "Praktikum Pemrograman Web : Laravel" beserta daftar produk dari database lengkap dengan nama, harga, dan deskripsi, membuktikan seluruh alur MVC berjalan dengan benar.


V. Latihan — CRUD Data Mahasiswa

Pada bagian latihan ini, dibuat implementasi Migration, Seeding, Model, Route, Controller, dan View untuk mengelola data mahasiswa dengan kolom nim, nama, jurusan, dan angkatan.

1 Membuat Model, Migration, Seeder, dan Controller Sekaligus

Untuk efisiensi, Laravel menyediakan shortcut pembuatan Model beserta Migration, Seeder, dan Controller sekaligus dalam satu perintah menggunakan flag -mcs.

php artisan make:model Mahasiswa -mcs
Gambar Latihan 1 – Membuat Model, Migration, Seeder, dan Controller dengan php artisan make:model Mahasiswa -mcs

Dari satu perintah tersebut, Laravel otomatis membuat 4 file sekaligus: Mahasiswa.php (Model), file migration tabel mahasiswas, MahasiswaSeeder.php, dan MahasiswaController.php.

2 Mengisi File Migration

Buka file migration yang terbentuk di folder database/migrations, kemudian tambahkan kolom nim, nama, jurusan, dan angkatan pada method up().

Isi file migration mahasiswa
Gambar Latihan 2 – Isi File Migration Mahasiswa

Jalankan php artisan migrate untuk membuat tabel mahasiswas di database.

3 Mengisi Seeder Data Mahasiswa

Buka file MahasiswaSeeder.php di folder database/seeders, kemudian isi dengan data mahasiswa awal.

Isi file MahasiswaSeeder.php
Gambar Latihan 3 – Isi File MahasiswaSeeder.php

Daftarkan seeder pada DatabaseSeeder.php dengan menambahkan $this->call(MahasiswaSeeder::class), kemudian jalankan php artisan db:seed.

Mendaftarkan seeder mahasiswa di DatabaseSeeder.php
Gambar Latihan 3 – Mendaftarkan Seeder
4 Mengisi Model Mahasiswa

Buka file app/Models/Mahasiswa.php dan tambahkan property $fillable untuk menentukan kolom yang dapat diisi, yaitu nim, nama, jurusan, dan angkatan.

Isi file Mahasiswa.php
Gambar Latihan 4 – Isi File Mahasiswa.php
5 Mengisi Controller Mahasiswa

Buka file app/Http/Controllers/MahasiswaController.php dan isi dengan method-method CRUD: index() untuk menampilkan data, create() untuk form tambah, store() untuk menyimpan data baru, edit() untuk form edit, update() untuk mengubah data, dan destroy() untuk menghapus data.

Isi file MahasiswaController.php
Gambar Latihan 5 – Isi File MahasiswaController.php
6 Menambahkan Route Mahasiswa

Buka file routes/web.php dan tambahkan Resource Route untuk mahasiswa dengan Route::resource, yang secara otomatis mendaftarkan semua route CRUD (index, create, store, show, edit, update, destroy) sekaligus.

Tambah route resource mahasiswa di web.php
Gambar Latihan 6 – Menambahkan Resource Route Mahasiswa di web.php
7 Membuat View - Halaman Daftar Mahasiswa

Buat file resources/views/mahasiswa/index.blade.php untuk menampilkan daftar seluruh mahasiswa dalam bentuk tabel, lengkap dengan tombol Edit dan Hapus pada setiap baris, serta tombol Tambah Mahasiswa di bagian atas.

Isi file index.blade.php
Gambar Latihan 7 – Isi File index.blade.php (index)
8 Membuat View - Form Tambah Mahasiswa

Buat file resources/views/mahasiswa/create.blade.php yang berisi form input untuk menambahkan data mahasiswa baru. Form menggunakan method POST ke route /mahasiswa dengan token @csrf untuk keamanan.

Isi file create.blade.php
Gambar Latihan 8 – Isi File create.blade.php
9 Membuat View - Form Edit Mahasiswa

Buat file resources/views/mahasiswa/edit.blade.php yang berisi form untuk mengubah data mahasiswa. Form menggunakan method POST dengan @method('PUT') dan menampilkan nilai data lama di setiap field sebagai value awal.

Isi file edit.blade.php
Gambar Latihan 9 – Isi File edit.blade.php
10 Menguji Aplikasi CRUD Mahasiswa

Akses http://127.0.0.1:8000/mahasiswa di browser untuk memastikan seluruh fitur CRUD berjalan dengan benar — menampilkan data, menambah, mengedit, dan menghapus data mahasiswa.

Tampilan halaman daftar mahasiswa
Gambar Latihan 10 – Tampilan Halaman Daftar Mahasiswa
Tampilan form tambah mahasiswa
Gambar Latihan 11 – Tampilan Form Tambah Mahasiswa
Tampilan form tambah mahasiswa
Gambar Latihan 11 – Tampilan Setelah Menambahkan Mahasiswa
Tampilan form edit mahasiswa
Gambar Latihan 12 – Tampilan Form Edit Mahasiswa
Tampilan form edit mahasiswa
Gambar Latihan 12 – Tampilan Setelah Mengupdate Data Mahasiswa
Tampilan Hapus mahasiswa
Gambar Latihan 13 – Tampilan Form Hapus Mahasiswa
Tampilan hapus mahasiswa
Gambar Latihan 13 – Tampilan Setelah Menghapus Data Mahasiswa

V. Hasil & Pembahasan

Praktikum ini berhasil mengimplementasikan alur lengkap MVC pada Laravel, mulai dari konfigurasi database, pembuatan tabel menggunakan Migration, pengisian data awal melalui Seeding, pembuatan Model dengan Eloquent ORM, pembuatan Controller untuk memproses logika, pengaturan Routing, hingga menampilkan data ke View menggunakan Blade Template Engine.

Data produk dan mahasiswa berhasil ditampilkan di browser pada URL /products dan /mahasiswa dengan format yang rapi, membuktikan bahwa seluruh komponen MVC telah terhubung dan berjalan dengan benar. Penggunaan Blade Layout juga berhasil menghindari penulisan ulang struktur HTML pada setiap halaman.

Komponen File Fungsi
Migrationdatabase/migrations/..._create_products_table.phpMembuat struktur tabel products
Seederdatabase/seeders/ProductSeeder.phpMengisi data awal (Laptop, Mouse)
Modelapp/Models/Product.phpInteraksi data dengan database
Controllerapp/Http/Controllers/ProductController.phpMengambil data dan mengirim ke view
Routeroutes/web.phpMenentukan URL /products
Layoutresources/views/layouts/app.blade.phpTemplate HTML yang dapat digunakan ulang
Viewresources/views/products.blade.phpMenampilkan daftar produk

VI. Kesimpulan

Berdasarkan praktikum yang telah dilakukan, dapat disimpulkan bahwa:

  1. Migration berhasil digunakan untuk membuat tabel products secara terstruktur dan terversioning melalui kode program.
  2. Seeding memudahkan pengisian data awal ke database tanpa perlu input manual melalui phpMyAdmin.
  3. Model dengan Eloquent ORM memungkinkan pengambilan data dari database cukup dengan satu baris perintah Product::all().
  4. Controller berhasil menjadi penghubung antara Model dan View sehingga logika aplikasi terpisah dengan rapi.
  5. Blade Layout memungkinkan pembuatan template HTML yang dapat digunakan ulang, menghindari duplikasi kode di setiap halaman.
  6. Seluruh komponen MVC telah terhubung dan data berhasil ditampilkan di browser.
Semua langkah berhasil dijalankan dan output sesuai yang diharapkan. Data produk tampil dengan benar di browser.
Lihat Repository GitHub