Pemrograman Web

Migration, Seeding, Routing, Model, Controller, View

A. Pendahuluan

Laravel merupakan salah satu framework PHP yang banyak dipakai untuk membangun aplikasi web modern. Framework ini menyediakan struktur kerja yang rapi melalui konsep MVC atau Model-View-Controller, sehingga proses pengembangan aplikasi menjadi lebih terarah. Dalam Laravel, pengaturan database, routing, model, controller, dan view dapat saling terhubung untuk membentuk alur aplikasi yang lengkap.

Pada praktikum ini, pembahasan difokuskan pada pembuatan aplikasi sederhana menggunakan Laravel. Materi yang dipelajari meliputi konfigurasi database, pembuatan migration untuk membentuk struktur tabel, penggunaan seeder untuk mengisi data awal, pengaturan routing, pembuatan model, controller, dan view. Seluruh bagian tersebut digunakan untuk memahami proses kerja aplikasi CRUD sederhana dari sisi database sampai tampilan web.

B. Tujuan

  1. Mahasiswa memahami penggunaan migration untuk membuat dan mengatur struktur tabel di database Laravel.
  2. Mahasiswa mengetahui cara memakai seeding untuk mengisi data awal ke dalam database.
  3. Mahasiswa mampu menghubungkan konsep Model, View, Controller, dan Routing dalam aplikasi Laravel.
  4. Mahasiswa mampu menampilkan data dari database ke halaman web melalui kombinasi model, controller, dan blade view.
  5. Mahasiswa memahami dasar pembuatan fitur CRUD sederhana, yaitu tambah, lihat, edit, dan hapus data.

C. Alat atau Tools yang Dipakai

Tools yang digunakan dalam praktikum ini adalah sebagai berikut.

  • Laragon atau XAMPP
  • Visual Studio Code
  • Composer
  • Git
  • Node JS
  • NPM
  • GitHub

D. Langkah Pengerjaan

Langkah pengerjaan dimulai dari konfigurasi database lokal, pembuatan tabel menggunakan migration, pengisian data awal dengan seeder, pembuatan routing, sampai penyusunan halaman view agar data dapat tampil di browser.

1.1 Konfigurasi Database

Langkah pertama adalah menjalankan Apache dan MySQL melalui XAMPP Control Panel. Apache digunakan sebagai server lokal, sedangkan MySQL digunakan sebagai database untuk project Laravel.

Setelah MySQL berjalan, buka phpMyAdmin melalui alamat http://localhost/phpmyadmin, lalu buat database baru dengan nama praktikum_laravel. Database ini akan dipakai untuk menyimpan tabel dan data yang diproses oleh Laravel.

Membuat database praktikum_laravel melalui phpMyAdmin

Berikutnya, buka file .env pada project Laravel dan ubah pengaturan koneksi database agar sesuai dengan database yang sudah dibuat. Umumnya, koneksi memakai DB_CONNECTION=mysql, host 127.0.0.1, port 3306, nama database praktikum_laravel, username root, dan password dikosongkan apabila mengikuti konfigurasi bawaan XAMPP.

Pengaturan koneksi database pada file .env

1.2 Membuat Migration untuk Tabel Products

Setelah database siap, langkah berikutnya adalah membuat migration. Migration digunakan untuk membangun struktur tabel lewat kode, sehingga tabel tidak perlu dibuat secara manual di phpMyAdmin.

Perintah yang dijalankan pada terminal adalah sebagai berikut.

php artisan make:migration create_products_table

Setelah perintah dijalankan, Laravel membuat file migration baru di folder database/migrations. File tersebut akan digunakan untuk mendefinisikan kolom-kolom pada tabel products.

File migration products berhasil dibuat

1.3 Mengisi Struktur Tabel di Migration

File migration yang sudah dibuat kemudian diisi dengan struktur tabel. Pada fungsi up(), kolom seperti id, name, price, description, serta timestamps ditambahkan agar tabel products memiliki data yang dibutuhkan.

Bagian down() digunakan untuk menghapus tabel ketika migration di-rollback. Dengan begitu, Laravel dapat mengatur proses pembuatan dan pembatalan struktur database secara rapi.

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

1.4 Menjalankan Migration

Setelah struktur tabel selesai ditulis, migration dijalankan agar Laravel membuat tabel products di database. Perintah yang digunakan adalah sebagai berikut.

php artisan migrate

Jika proses berhasil, tabel products akan muncul di database praktikum_laravel. Tabel bawaan Laravel seperti users, cache, dan jobs juga dapat terlihat apabila migration bawaan ikut dijalankan.

Terminal saat menjalankan migration products
Tabel products muncul di database praktikum_laravel

1.5 Membuat Seeder

Seeder dipakai untuk memasukkan data awal ke database secara otomatis. Dengan seeder, data contoh tidak perlu dimasukkan satu per satu melalui phpMyAdmin.

Perintah untuk membuat seeder products adalah sebagai berikut.

php artisan make:seeder ProductSeeder

Setelah berhasil dijalankan, Laravel membuat file ProductSeeder.php di folder database/seeders.

Perintah membuat ProductSeeder

1.6 Mengisi Data di ProductSeeder

File ProductSeeder.php kemudian diisi dengan data awal untuk tabel products. Contoh data yang dapat dimasukkan adalah produk Laptop dan Mouse, lengkap dengan harga dan deskripsinya.

Data tersebut dimasukkan melalui query insert agar langsung tersimpan ke tabel products saat seeder dijalankan.

Isi kode ProductSeeder untuk menambahkan data awal products

1.7 Memanggil ProductSeeder di DatabaseSeeder

Agar ProductSeeder dapat dijalankan oleh sistem, file tersebut perlu didaftarkan di dalam DatabaseSeeder.php. Pemanggilan dilakukan pada method run() dengan menambahkan class ProductSeeder.

$this->call(ProductSeeder::class);

Dengan cara ini, Laravel mengetahui bahwa seeder products harus ikut dieksekusi ketika perintah seeding dijalankan.

Pemanggilan ProductSeeder pada DatabaseSeeder

1.8 Menjalankan Seeder

Setelah seeder didaftarkan, data awal dapat dimasukkan ke database melalui terminal. Perintah yang digunakan adalah sebagai berikut.

php artisan db:seed

Jika proses berhasil, data produk seperti Laptop dan Mouse akan muncul pada tabel products di phpMyAdmin.

Hasil proses seeding tabel products

1.9 Membuat Routing

Routing digunakan untuk menentukan URL yang dapat diakses oleh user serta respons yang dikembalikan oleh aplikasi. Di Laravel, route ditulis pada file web.php di dalam folder routes.

Melalui file ini, aplikasi dapat diarahkan untuk menampilkan teks sederhana, memanggil controller, mengirim parameter, memakai nama route, sampai membuat route group.

Contoh routing dasar pada file web.php

1.10 Routing Dasar

Routing dasar digunakan untuk memberi respons sederhana ketika user membuka URL tertentu. Misalnya, ketika user mengakses /produk, aplikasi dapat menampilkan tulisan Halaman Produk di browser.

Route::get('/produk', function () { return 'Halaman Produk'; });

Setelah server Laravel dijalankan dengan php artisan serve, route tersebut dapat diuji melalui browser.

1.11 Routing Parameter

Routing parameter digunakan untuk mengambil nilai tertentu langsung dari URL. Contohnya, ketika user membuka /produk/1, angka 1 dapat ditangkap sebagai ID produk dan ditampilkan di browser.

Route::get('/produk/{id}', function ($id) { return 'Produk ID: ' . $id; });

Konsep ini penting ketika aplikasi perlu menampilkan detail data berdasarkan identitas tertentu, seperti detail produk atau detail mahasiswa.

Contoh routing parameter produk berdasarkan id
Hasil route parameter produk id di browser

1.12 Named Route

Named route digunakan untuk memberi nama alias pada sebuah route. Dengan named route, URL tidak perlu ditulis manual berulang kali. Jika suatu saat alamat route berubah, pemanggilan yang memakai nama route tetap lebih mudah disesuaikan.

Route::get('/dashboard', function () { return 'Halaman Dashboard'; })->name('dashboard');

Pada file blade, route tersebut dapat dipanggil menggunakan fungsi route('dashboard').

Contoh named route dashboard

1.13 Route Group

Route group digunakan untuk mengelompokkan beberapa route yang memiliki awalan URL yang sama. Contohnya, route dengan prefix /admin dapat dipakai untuk halaman dashboard dan data user.

Route::prefix('admin')->group(function () { Route::get('/dashboard', function () { return 'Admin Dashboard'; }); Route::get('/user', function () { return 'Data User'; }); });

Dengan route group, penulisan route menjadi lebih rapi dan tidak perlu mengulang awalan URL yang sama.

Contoh route group dengan prefix admin

1.14 Membuat Model Product

Model berfungsi sebagai jembatan antara aplikasi Laravel dan tabel di database. Untuk membuat model Product, perintah yang dijalankan adalah sebagai berikut.

php artisan make:model Product

Setelah perintah dieksekusi, Laravel membuat file Product.php di folder app/Models.

File model Product berhasil dibuat

1.15 Mengatur Isi Model Product

Agar model Product dapat menerima input data pada kolom tertentu, properti $fillable perlu ditambahkan. Properti ini berisi daftar kolom yang boleh diisi secara mass assignment.

protected $fillable = [ 'name', 'price', 'description' ];

Dengan pengaturan tersebut, model Product dapat digunakan untuk menyimpan dan mengambil data produk secara lebih aman dan terstruktur.

1.16 Penjelasan Fungsi Model

Model Product bertugas menghubungkan aplikasi Laravel dengan tabel products. Melalui model, proses mengambil, menambah, mengubah, dan menghapus data dapat dilakukan lebih praktis menggunakan fitur Eloquent ORM.

Model membuat controller tidak perlu langsung menulis query database secara manual. Controller cukup memanggil model, sedangkan model menangani hubungan dengan tabel yang sesuai.

Pengaturan fillable pada model Product

1.17 Menyiapkan ProductController dan Route Products

Setelah model siap, controller dibuat untuk mengatur proses pengambilan data products dan mengirimkannya ke view. Route products kemudian dihubungkan ke controller agar halaman dapat menampilkan data dari database.

Perintah membuat ProductController
Route products mengarah ke ProductController index
Function index pada ProductController
ProductController mengambil seluruh data products
Route resource products pada file web.php

1.18 Membuat Blade Layout

Blade layout digunakan sebagai template utama agar struktur halaman seperti html, head, navbar, dan footer tidak perlu ditulis berulang di setiap halaman. Pada praktikum ini, folder layouts dibuat di dalam resources/views, lalu file app.blade.php dibuat sebagai layout utama.

Isi file app.blade.php sebagai layout utama

1.19 Mengisi File app.blade.php

File app.blade.php diisi dengan struktur HTML utama. Bagian @yield('title') digunakan untuk menampilkan judul halaman yang dikirim dari view lain, sedangkan @yield('content') menjadi tempat isi halaman dimasukkan.

<title>@yield('title')</title> <body> <h1>Aplikasi Laravel</h1> @yield('content') </body>

Dengan layout ini, halaman lain cukup mengisi bagian title dan content tanpa membuat kerangka HTML dari awal.

1.20 Membuat View Product

Setelah layout tersedia, halaman untuk menampilkan data produk dibuat dengan nama products.blade.php di folder resources/views. File ini digunakan untuk menampilkan data produk yang dikirim dari controller.

View tersebut memakai @extends('layouts.app') untuk menghubungkan halaman products dengan layout utama.

Isi file products.blade.php untuk menampilkan data products

1.21 Menghubungkan View dengan Blade Layout

File products.blade.php dihubungkan ke layout menggunakan sintaks @extends. Bagian @section('title', 'Products') mengisi judul halaman, sedangkan @section('content') mengisi konten utama.

Data produk yang dikirim dari controller ditampilkan menggunakan perulangan @foreach. Setiap data produk akan ditampilkan dalam bentuk daftar yang berisi nama, harga, dan deskripsi.

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

1.22 Menjalankan Halaman Products

Setelah layout dan view selesai dibuat, server Laravel dijalankan kembali menggunakan perintah php artisan serve. Halaman products kemudian dibuka melalui alamat http://127.0.0.1:8000/products.

Jika seluruh konfigurasi benar, halaman akan menampilkan daftar produk dari database dengan tampilan yang berasal dari Blade Layout.

2. Tugas

Pada bagian tugas, praktikum dilanjutkan dengan membuat fitur CRUD data mahasiswa. Data mahasiswa disimpan pada database baru, kemudian dihubungkan ke Laravel melalui model, migration, seeder, route resource, controller, dan view.

2.1 Membuat Database Mahasiswa

Langkah pertama adalah membuat database baru melalui phpMyAdmin dengan nama db_mahasiswa. Database ini digunakan untuk menyimpan tabel mahasiswa.

Pembuatan database db_mahasiswa

2.2 Menyesuaikan Koneksi Database

File .env diubah agar Laravel memakai database db_mahasiswa. Bagian yang disesuaikan meliputi nama database, username, dan password.

DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=db_mahasiswa DB_USERNAME=root DB_PASSWORD=
Pengaturan koneksi database db_mahasiswa pada file .env

2.3 Membuat Model Mahasiswa

Model Mahasiswa dibuat sebagai representasi data mahasiswa di aplikasi Laravel. Pada model ini, kolom nim, nama, dan jurusan dimasukkan ke dalam properti $fillable agar bisa diisi melalui form.

protected $fillable = [ 'nim', 'nama', 'jurusan' ];
Model Mahasiswa dengan pengaturan fillable

2.4 Membuat Migration Mahasiswa

Untuk membuat struktur tabel mahasiswa, migration dibuat melalui terminal. Perintah yang digunakan adalah sebagai berikut.

php artisan make:migration create_mahasiswa_table

2.5 Mengisi Struktur Tabel Mahasiswa

File migration mahasiswa diisi dengan kolom nim, nama, dan jurusan. Kolom nim dibuat unik agar tidak ada dua mahasiswa yang memiliki NIM sama.

Schema::create('mahasiswa', function (Blueprint $table) { $table->id(); $table->string('nim')->unique(); $table->string('nama'); $table->string('jurusan'); $table->timestamps(); });
Struktur migration tabel mahasiswa

2.6 Menjalankan Migration Mahasiswa

Setelah struktur tabel selesai dibuat, migration dijalankan agar tabel mahasiswa benar-benar terbentuk di database.

php artisan migrate

2.7 Membuat Seeder Mahasiswa

Seeder mahasiswa dibuat untuk menyediakan data awal yang dapat langsung diuji pada halaman CRUD.

php artisan make:seeder MahasiswaSeeder

2.8 Mengisi Data Seeder Mahasiswa

File MahasiswaSeeder.php diisi dengan data contoh, seperti NIM, nama, dan jurusan. Data ini akan masuk ke tabel mahasiswa ketika proses seeding dijalankan.

Isi file MahasiswaSeeder
Pemanggilan MahasiswaSeeder pada DatabaseSeeder

2.9 Menjalankan Seeder Mahasiswa

Seeder dijalankan bersamaan dengan migration menggunakan perintah berikut.

php artisan migrate --seed

Setelah proses berhasil, data awal mahasiswa dapat dicek melalui phpMyAdmin atau langsung melalui halaman aplikasi.

2.10 Membuat Route Resource

Route resource digunakan agar seluruh jalur CRUD otomatis terhubung ke controller. Pada file web.php, route resource ditambahkan untuk resource mahasiswa.

Route::resource('mahasiswa', MahasiswaController::class);
Route resource mahasiswa pada file web.php

2.11 Membuat MahasiswaController

File MahasiswaController.php dibuat di folder app/Http/Controllers. Controller ini menjadi tempat logika utama aplikasi, mulai dari menampilkan data, membuka form tambah data, menyimpan data, membuka form edit, memperbarui data, sampai menghapus data.

Method yang digunakan antara lain index(), create(), store(), edit(), update(), dan destroy().

Isi MahasiswaController untuk proses CRUD

2.12 Membuat View Index

File index.blade.php dibuat di folder resources/views/mahasiswa. Halaman ini bertugas menampilkan daftar mahasiswa dalam bentuk tabel, lengkap dengan tombol tambah data, edit, dan hapus.

Kode view index daftar mahasiswa
Tampilan awal daftar mahasiswa

2.13 Membuat View Create

File create.blade.php digunakan untuk menampilkan form tambah mahasiswa baru. Form ini berisi input NIM, nama, dan jurusan, lalu data dikirim ke route store.

Kode view create mahasiswa
Tampilan form tambah mahasiswa baru
Daftar mahasiswa setelah data baru ditambahkan

2.14 Membuat View Edit

File edit.blade.php digunakan untuk menampilkan form edit data mahasiswa. Data lama ditampilkan kembali di dalam form agar user dapat memperbarui informasi yang diperlukan.

Output akhir dari tugas ini adalah halaman daftar mahasiswa yang dapat menampilkan data, menambah data baru, mengedit data, dan menghapus data melalui browser.

Kode view edit mahasiswa
Tampilan form edit mahasiswa

E. Kesimpulan

Melalui praktikum ini, mahasiswa dapat memahami alur pembuatan aplikasi web modern menggunakan Laravel. Migration membantu mengatur struktur database melalui kode, seeder mempermudah pengisian data awal, model menjadi penghubung antara aplikasi dan tabel database, controller mengatur logika pemrosesan data, sedangkan view menampilkan hasilnya kepada pengguna.

Praktikum ini juga menunjukkan bahwa routing berperan penting dalam menghubungkan URL dengan proses aplikasi. Dengan memakai route resource, proses CRUD dapat disusun lebih rapi karena setiap aksi sudah memiliki jalurnya masing-masing. Secara keseluruhan, kombinasi migration, seeding, routing, model, controller, dan view menjadi dasar penting untuk membangun aplikasi CRUD sederhana yang terstruktur dan mudah dikembangkan.