📄

Laporan Praktikum Pemrograman Web

Migration · Seeding · Routing · Model · Controller · View

Praktikum 7

Disusun Oleh
Ahmad Zahran
2411532004
Dosen Pengampu
Nurfiah, S.ST. M.Kom
Universitas Andalas · 2026

Pendahuluan

Laravel merupakan framework berbasis PHP yang digunakan untuk mempermudah proses pengembangan aplikasi web. Laravel menyediakan berbagai fitur seperti routing, controller, migration, ORM Eloquent, dan template engine Blade yang membantu developer dalam membangun aplikasi secara lebih terstruktur dan efisien.

Pada praktikum ini dilakukan pengelolaan database menggunakan Migration dan Seeder, pembuatan Model dengan Eloquent ORM, Controller dengan resource method, serta View menggunakan Blade Template Engine. Semua ini dirangkai dalam arsitektur MVC (Model View Controller) untuk membangun aplikasi web CRUD yang lengkap.

Praktikum ini merupakan kelanjutan dari Praktikum 6 dan bertujuan untuk memahami alur kerja penuh dalam pengembangan aplikasi web berbasis Laravel mulai dari database hingga tampilan antarmuka.

Tujuan Praktikum

1

Memahami struktur dan alur kerja Laravel sebagai framework PHP modern.

2

Mengelola database menggunakan fitur Migration dan Seeding.

3

Membuat dan mengatur Routing aplikasi web.

4

Membangun Model untuk interaksi dengan database menggunakan Eloquent ORM.

5

Membuat tampilan antarmuka menggunakan Blade Template Engine.

6

Mengembangkan Controller sebagai penghubung antara Model dan View.

7

Mengimplementasikan operasi CRUD (Create, Read, Update, Delete) secara lengkap.

Langkah Kerja Praktikum

BAB IV — LANGKAH-LANGKAH PRAKTIKUM
4.1 Konfigurasi Database

Buka file .env pada root project Laravel, kemudian ubah konfigurasi database:

DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=praktikum_laravel DB_USERNAME=root DB_PASSWORD=
4.2 Membuat Migration

Jalankan perintah berikut untuk membuat file migration tabel products:

php artisan make:migration create_products_table

Isi file migration dengan struktur tabel berikut:

Schema::create('products', function (Blueprint $table) { $table->id(); $table->string('name'); $table->integer('price'); $table->text('description'); $table->timestamps(); });

Jalankan migration untuk membuat tabel di database:

php artisan migrate
4.3 Membuat Seeder

Buat file seeder dengan perintah:

php artisan make:seeder ProductSeeder

Tambahkan data dummy pada ProductSeeder.php:

DB::table('products')->insert([ ['name' => 'Laptop', 'price' => 7000000, 'description' => 'Laptop untuk pemrograman', 'created_at' => now(), 'updated_at' => now()], ['name' => 'Mouse', 'price' => 150000, 'description' => 'Mouse wireless', 'created_at' => now(), 'updated_at' => now()], ]);

Daftarkan seeder pada DatabaseSeeder.php lalu jalankan:

$this->call(ProductSeeder::class); php artisan db:seed
4.4 Membuat Model

Buka atau buat file app/Models/Product.php dan tambahkan $fillable:

class Product extends Model { use HasFactory; protected $fillable = ['name', 'price', 'description']; }
4.5 Membuat Controller

Buat resource controller menggunakan perintah artisan:

php artisan make:controller ProductController --resource

Isi method index() untuk menampilkan data produk:

use App\Models\Product; public function index() { $products = Product::all(); return view('products', compact('products')); }
4.6 Mengatur Routing

Tambahkan route resource pada file routes/web.php:

use App\Http\Controllers\ProductController; Route::resource('products', ProductController::class);

Route resource mendaftarkan 7 endpoint secara otomatis:

Method Fungsi URL
indexMenampilkan semua dataGET /products
createForm tambah dataGET /products/create
storeMenyimpan data baruPOST /products
showMenampilkan detail dataGET /products/{id}
editForm edit dataGET /products/{id}/edit
updateMengubah dataPUT /products/{id}
destroyMenghapus dataDELETE /products/{id}
4.7 Membuat View

Buat file layout utama di resources/views/layouts/app.blade.php:

<!DOCTYPE html> <html><head><title>@yield('title')</title></head> <body> <h1>Aplikasi Laravel</h1> @yield('content') </body></html>

Buat view daftar produk di resources/views/products.blade.php:

@extends('layouts.app') @section('title', 'Products') @section('content') <ul> @foreach ($products as $product) <li>{{ $product->name }}</li> @endforeach </ul> @endsection

Tugas: CRUD Data Mahasiswa

BAB V — IMPLEMENTASI CRUD MAHASISWA

Pada bagian tugas, dibuat aplikasi CRUD lengkap untuk mengelola data mahasiswa.

5.1 Migration Tabel Mahasiswa

Tabel mahasiswas dibuat dengan kolom: id, nim, nama, email, jurusan, angkatan, dan timestamps.

Schema::create('mahasiswas', function (Blueprint $table) { $table->id(); $table->string('nim')->unique(); $table->string('nama'); $table->string('email')->unique(); $table->string('jurusan'); $table->integer('angkatan'); $table->timestamps(); });
5.2 Seeder Data Mahasiswa

MahasiswaSeeder mengisi 5 data dummy mahasiswa dari berbagai jurusan dan angkatan untuk keperluan pengujian.

DB::table('mahasiswas')->insert([ ['nim' => '2021001', 'nama' => 'Andi Pratama', 'email' => 'andi@example.com', 'jurusan' => 'Teknik Informatika', 'angkatan' => 2021, 'created_at' => now(), 'updated_at' => now()], // ... data lainnya ]);
5.3 Model Mahasiswa

Model Mahasiswa dibuat di app/Models/Mahasiswa.php dengan $fillable berisi kolom yang dapat diisi secara massal.

class Mahasiswa extends Model { use HasFactory; protected $fillable = ['nim','nama','email','jurusan','angkatan']; }
5.4 Route Mahasiswa

Route resource didaftarkan di routes/web.php sehingga semua endpoint CRUD tersedia otomatis.

use App\Http\Controllers\MahasiswaController; Route::get('/', fn() => redirect()->route('mahasiswa.index')); Route::resource('mahasiswa', MahasiswaController::class);
5.5 MahasiswaController

Controller dibuat dengan --resource dan berisi 7 method lengkap beserta validasi input:

public function store(Request $request) { $request->validate([ 'nim' => 'required|unique:mahasiswas,nim', 'nama' => 'required|string|max:100', 'email' => 'required|email|unique:mahasiswas,email', 'jurusan' => 'required|string|max:100', 'angkatan' => 'required|integer|min:2000|max:2099', ]); Mahasiswa::create($request->all()); return redirect()->route('mahasiswa.index') ->with('success', 'Data berhasil ditambahkan!'); }
5.6 View Blade

View terdiri dari 5 file Blade yang menggunakan layout bersama:

  • layouts/app.blade.php — Template utama (navbar, alert, struktur HTML)
  • mahasiswa/index.blade.php — Tabel daftar mahasiswa dengan tombol aksi
  • mahasiswa/create.blade.php — Form tambah mahasiswa dengan validasi
  • mahasiswa/edit.blade.php — Form edit dengan data yang sudah terisi
  • mahasiswa/show.blade.php — Halaman detail satu data mahasiswa

Hasil Praktikum

BAB VI — HASIL PRAKTIKUM

Setelah menjalankan seluruh langkah praktikum, aplikasi CRUD data mahasiswa berhasil dibangun dengan fitur-fitur berikut:

📋
Halaman Index — Menampilkan seluruh data mahasiswa dalam bentuk tabel dengan tombol Detail, Edit, dan Hapus.
Halaman Create — Form tambah data mahasiswa baru dilengkapi validasi input dan pesan error.
✏️
Halaman Edit — Form ubah data dengan nilai field yang sudah terisi otomatis.
🔍
Halaman Show — Halaman detail menampilkan seluruh informasi satu mahasiswa.
🗑️
Fitur Delete — Menghapus data dengan konfirmasi popup sebelum dihapus.
Notifikasi — Pesan sukses muncul setelah setiap operasi CRUD berhasil.

Perintah yang Dijalankan

Kategori Perintah
Migrationphp artisan make:migration create_mahasiswas_table
Seederphp artisan make:seeder MahasiswaSeeder
Modelphp artisan make:model Mahasiswa
Controllerphp artisan make:controller MahasiswaController --resource
Run Migration + Seedphp artisan migrate:fresh --seed
Cek Routephp artisan route:list
Jalankan Serverphp artisan serve

Kesimpulan

BAB VII — KESIMPULAN
  • Laravel menyediakan struktur MVC yang memisahkan logika data (Model), tampilan (View), dan kontrol (Controller) sehingga kode lebih terorganisir dan mudah dikembangkan.
  • Migration memudahkan pengelolaan struktur database menggunakan kode PHP sehingga perubahan dapat dilacak dan di-rollback kapan saja.
  • Seeding sangat berguna untuk mengisi data awal atau data dummy saat pengembangan dan pengujian aplikasi.
  • Resource Controller dan Resource Route menyederhanakan pembuatan endpoint CRUD karena hanya memerlukan satu perintah artisan untuk menghasilkan 7 method dan 7 route secara otomatis.
  • Blade Template Engine memudahkan pembuatan tampilan dinamis dengan sintaks yang bersih, mendukung layout bersama, dan menghindari pengulangan kode HTML.
  • Eloquent ORM memungkinkan interaksi database dengan cara yang intuitif menggunakan sintaks PHP berorientasi objek tanpa perlu menulis query SQL secara manual.