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
- Mahasiswa memahami penggunaan migration untuk membuat dan mengatur struktur tabel di database Laravel.
- Mahasiswa mengetahui cara memakai seeding untuk mengisi data awal ke dalam database.
- Mahasiswa mampu menghubungkan konsep Model, View, Controller, dan Routing dalam aplikasi Laravel.
- Mahasiswa mampu menampilkan data dari database ke halaman web melalui kombinasi model, controller, dan blade view.
- 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.
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.
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.
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.
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();
});
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.
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.
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.
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.
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.
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.
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.
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').
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.
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.
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.
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.
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.
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.
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.
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=
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'
];
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();
});
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.
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);
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().
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.
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.
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.
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.