PRACTICUM REPORT

Laporan Praktikum

Kumpulan laporan praktikum yang disusun berdasarkan mata kuliah.

Pemrograman Web

Praktikum Laravel: Routing, View, dan Controller

Membahas persiapan proyek Laravel, pengujian route sederhana, serta challenge controller dan view.

Pemrograman Web

Migration, Seeding, Routing, Model, Controller, View

Membahas alur pengembangan aplikasi web dari pengelolaan database hingga tampilan pengguna.

Pemrograman Web

Student, Major, dan Subject

Membahas pengelolaan data student, major, dan subject pada materi Pemrograman Web.

Desain Web

Praktikum 1: Struktur HTML

Membuat struktur halaman web menggunakan elemen HTML dasar dan semantik.

Desain Web

Praktikum 2: CSS Responsive

Mengatur tampilan halaman web dengan CSS, grid, dan media query.

PBO

Praktikum 3: GUI Kalkulator

Membangun aplikasi kalkulator sederhana dengan Java dan komponen GUI.

PBO

Praktikum 4: Aplikasi Laundry

Membuat aplikasi desktop sederhana untuk mengelola data layanan laundry.

Sistem Operasi

Praktikum 5: Custom Ubuntu ISO

Melakukan remastering Ubuntu sesuai kebutuhan praktikum sistem operasi.

Basis Data

Praktikum 6: CRUD Data

Mengelola data menggunakan konsep create, read, update, dan delete.

Pemrograman Web

Praktikum Laravel: Routing, View, dan Controller

1. Pendahuluan

Laravel dikenal secara luas sebagai salah satu kerangka kerja atau framework bahasa pemrograman PHP yang paling diminati untuk membangun berbagai aplikasi berbasis web. Dengan menerapkan pola arsitektur Model-View-Controller atau MVC, framework ini memfasilitasi proses penulisan kode yang lebih sistematis, terorganisir, dan mudah untuk dipelihara.

Modul praktikum ini dirancang sebagai pengantar bagi mahasiswa untuk mengenali dasar-dasar Laravel, mencakup identifikasi perangkat lunak pendukung yang diwajibkan, pemahaman susunan direktori dasar dari sebuah proyek, serta pengenalan konsep MVC yang menjadi pilar fundamental dalam perancangan sistem. Rangkaian pembelajaran ini menjadi fondasi krusial sebelum praktikan melangkah pada tahapan pembuatan sistem web yang lebih rumit pada sesi berikutnya.

2. Tujuan

  1. Menguasai konsep-konsep fundamental dari kerangka kerja Laravel sebagai instrumen pengembangan web.
  2. Mengidentifikasi sekaligus menyiapkan berbagai perangkat lunak pendukung maupun prasyarat awal guna memfasilitasi sebuah proyek Laravel.
  3. Memahami anatomi susunan berkas standar pada proyek Laravel dan mengimplementasikan konsep arsitektur yang terdiri dari Model, View, beserta Controller.

3. Alat atau Tools yang Dipakai

Berikut ini merupakan daftar tools atau aplikasi yang wajib disiapkan selama berjalannya praktikum.

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

4. Langkah Pengerjaan

Fase ini difokuskan pada tahap persiapan lingkungan kerja sekaligus pengaturan awal proyek Laravel sesuai dengan instruksi yang tertera pada modul. Rangkaian aktivitas yang akan dilakukan meliputi tahap verifikasi kesiapan sistem, instalasi kerangka kerja, peluncuran server lokal, hingga eksplorasi terkait struktur folder dan konsep dasar MVC.

4.1 Verifikasi Prasyarat Sistem

Langkah paling awal sebelum memulai proses pembuatan proyek adalah memvalidasi ketersediaan berbagai aplikasi pendukung. Kelancaran tahapan pembuatan dan pengembangan sangat bergantung pada keberadaan PHP, Composer, Git, Node JS, beserta NPM di dalam sistem komputer.

Cara pengecekan versi spesifik untuk tiap perangkat lunak melalui terminal dapat dilakukan dengan beberapa perintah berikut.

  • php -v
  • composer --version
  • git --version
  • node -v
  • npm -v
Verifikasi versi PHP dan Composer melalui terminal
Daftar command Composer yang tampil di terminal
Verifikasi versi Git, Node JS, dan NPM

Apabila seluruh perintah tersebut berhasil menampilkan informasi versi masing-masing perangkat lunak, maka proses instalasi dapat dinyatakan sukses dan sistem siap untuk digunakan.

4.2 Membuat Proyek Baru Laravel

Setelah seluruh spesifikasi sistem dipastikan aman, tahapan dilanjutkan dengan pembentukan proyek Laravel. Pada sesi ini, pembuatan kerangka awal aplikasi dilakukan menggunakan Composer sehingga struktur dasar proyek dapat dibuat secara otomatis.

Perintah yang dapat dijalankan pada terminal untuk membangun proyek dengan nama PraktikumWeb1 adalah sebagai berikut.

composer create-project laravel/laravel PraktikumWeb1 --prefer-dist
Proses pembuatan project Laravel melalui Composer
Tahapan instalasi Laravel dan konfigurasi awal project

4.3 Mengakses Direktori Proyek

Bila proses instalasi telah selesai tanpa kendala, terminal diarahkan ke dalam folder proyek yang baru dibuat agar proses pengembangan dapat dilanjutkan dari lokasi kerja yang benar.

cd PraktikumWeb1
Perintah masuk ke direktori project PraktikumWeb1

4.4 Mengaktifkan Server Lokal Laravel

Untuk mengoperasikan proyek tersebut, jalankan server lokal bawaan Laravel melalui Artisan. Setelah itu, situs web dapat diakses melalui browser menggunakan alamat URL yang ditampilkan oleh sistem. Munculnya halaman beranda bawaan Laravel menjadi tanda bahwa aplikasi telah terkonfigurasi dan berjalan dengan normal.

php artisan serve
Terminal saat menjalankan php artisan serve
Halaman awal Laravel yang terbuka di browser lokal

4.5 Pengujian dengan Halaman Sederhana

Sebagai langkah konfirmasi lanjutan setelah aplikasi berhasil dijalankan, praktikan diminta untuk menampilkan halaman teks sederhana berupa Hello World. Tujuan dari pengujian ini adalah untuk memvalidasi bahwa pengaturan route serta tampilan respons dari aplikasi Laravel dapat berjalan tanpa error.

Kode route hello pada file web php
Hasil tampilan Hello World pada browser

4.6 Challenge

  1. Buat controller UserController.
  2. Buat function bernama index.
  3. Buat view di dalam folder resources/views/user/index.blade.php.
  4. Di dalam file index, buat tampilan HTML sederhana.
  5. Buat routing /user yang menampilkan view tersebut.
Kode userController yang memanggil view user index
Isi file index blade untuk halaman user
Routing user pada file web php
Hasil halaman user yang tampil di browser
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.

Pemrograman Web

Student, Major, dan Subject

A. Pendahuluan

Pada modul praktikum kali ini, materi yang dibahas berpusat pada penerapan relasi antar entitas dalam framework Laravel. Pemahaman konsep relasi ini merupakan hal yang sangat penting ketika membangun aplikasi web yang terhubung dengan basis data. Dengan materi ini, mahasiswa dapat memahami bagaimana satu sistem informasi akademik dapat bekerja secara cepat, terstruktur, dan mudah untuk dikembangkan di kemudian hari.

Studi kasus yang digunakan adalah sistem akademik sederhana yang menyambungkan tiga komponen data utama, yaitu Mahasiswa atau Student, Jurusan atau Major, dan Mata Kuliah atau Subject. Pada pola pertama terdapat relasi One-to-Many antara Major dan Student, karena satu jurusan dapat memiliki banyak mahasiswa, sedangkan satu mahasiswa hanya berada pada satu jurusan.

Pola relasi kedua adalah Many-to-Many antara Student dan Subject. Dalam skenario ini, seorang mahasiswa dapat mengambil lebih dari satu mata kuliah, dan satu mata kuliah yang sama dapat diikuti oleh banyak mahasiswa. Untuk menjembatani hubungan tersebut, Laravel memanfaatkan tabel perantara yang sering disebut sebagai pivot table.

B. Tujuan

Tujuan dari praktikum ini adalah sebagai berikut.

  1. Mendapatkan pemahaman teoritis dan teknis mengenai cara kerja relasi antar entitas menggunakan fitur-fitur pada framework Laravel.
  2. Mengimplementasikan logika relasi One-to-Many dan Many-to-Many secara langsung ke dalam basis data akademik.
  3. Menulis dan merancang instruksi migration dengan konfigurasi foreign key yang tepat dan aman antar tabel.
  4. Mengeksekusi proses manipulasi dan penarikan data secara efisien dengan memanfaatkan metode Eloquent relationship.
  5. Membangun halaman antarmuka atau views yang mampu menampilkan kumpulan data saling terhubung dalam format yang terorganisir.

C. Alat dan Tools

  • Laptop
  • XAMPP
  • Visual Studio Code
  • Composer
  • Git
  • Node JS

D. Langkah-Langkah

1. Persiapan Struktur Database

Sistem akademik sederhana ini memuat tiga relasi utama. Mahasiswa berada di satu jurusan dengan pola Many-to-One, jurusan memiliki banyak mahasiswa dengan pola One-to-Many, dan mahasiswa mengambil banyak mata kuliah melalui tabel pivot dengan pola Many-to-Many.

Langkah pertama adalah menyiapkan konfigurasi database pada file .env, mulai dari koneksi MySQL, host, port, nama database, username, sampai password.

Konfigurasi database pada file .env

2. Membuat File Migration

Migration digunakan untuk membangun struktur tabel secara otomatis melalui Laravel. Pada praktikum ini, migration dibuat untuk tabel majors, students, subjects, dan tabel pivot student_subject.

a) Migration Tabel Majors

Perintah php artisan make:migration create_majors_table digunakan untuk membuat tabel jurusan. Tabel ini memuat kolom dasar seperti id, name, dan timestamps, sedangkan fungsi down() disiapkan untuk menghapus tabel ketika rollback dijalankan.

Migration create_majors_table

b) Migration Tabel Students

Migration tabel students mengatur relasi mahasiswa dengan jurusan. Tabel ini memiliki kolom NIM, nama, alamat, dan major_id sebagai foreign key ke tabel majors. Pengaturan onDelete('cascade') membuat data mahasiswa ikut terhapus jika data jurusan terkait dihapus.

Migration create_students_table

c) Migration Tabel Subjects

Migration tabel subjects disiapkan untuk menampung data mata kuliah. Kolom yang digunakan adalah nama mata kuliah dan jumlah SKS yang disimpan dengan tipe data integer.

Migration create_subjects_table

d) Migration Tabel Pivot Student_Subject

Tabel pivot student_subject digunakan sebagai penghubung relasi Many-to-Many antara mahasiswa dan mata kuliah. Tabel ini menyimpan student_id dan subject_id, dilengkapi aturan unique agar kombinasi mahasiswa dan mata kuliah yang sama tidak tersimpan berulang.

Migration create_student_subject_table

Setelah semua file migration selesai dibuat, jalankan perintah php artisan migrate untuk mengeksekusi struktur tabel ke database.

3. Konfigurasi Model dan Relasi

a) Model Major

Model Major dibuat menggunakan perintah php artisan make:model Major. Pada model ini, kolom name diizinkan untuk mass assignment, lalu relasi hasMany ke model Student didefinisikan karena satu jurusan dapat memiliki banyak mahasiswa.

Model Major dengan relasi hasMany Student

b) Model Student

Model Student dibuat menggunakan perintah php artisan make:model Student. Model ini memuat relasi belongsTo ke Major karena mahasiswa masuk ke satu jurusan, serta relasi belongsToMany ke Subject karena mahasiswa dapat mengambil banyak mata kuliah.

Model Student dengan relasi major dan subjects

c) Model Subject

Model Subject dibuat menggunakan perintah php artisan make:model Subject. Model ini mendefinisikan relasi timbal balik belongsToMany ke model Student agar dapat diketahui siapa saja mahasiswa yang mengambil mata kuliah tertentu.

Model Subject dengan relasi belongsToMany Student

4. Pembuatan Seeder

a) MajorSeeder

MajorSeeder dibuat untuk mengisi data awal jurusan seperti Teknik Informatika, Sistem Informasi, Teknik Komputer, dan Manajemen Informatika. Data tersebut disimpan menggunakan metode Major::create().

MajorSeeder untuk data jurusan

b) SubjectSeeder

SubjectSeeder berfungsi menyimpan daftar mata kuliah beserta bobot SKS-nya, seperti Pemrograman Web, Database, Algoritma, Jaringan Komputer, dan Sistem Operasi.

SubjectSeeder untuk data mata kuliah

c) StudentSeeder

StudentSeeder dibuat untuk mengisi data beberapa mahasiswa lengkap dengan jurusannya. Seeder ini juga mengacak dan menautkan mata kuliah ke setiap mahasiswa menggunakan metode attach() pada relasi pivot.

StudentSeeder dengan attach subject

d) DatabaseSeeder

DatabaseSeeder digunakan untuk memanggil beberapa seeder sekaligus, yaitu MajorSeeder, SubjectSeeder, dan StudentSeeder. Setelah itu, perintah php artisan db:seed dijalankan untuk memasukkan semua data awal ke database.

DatabaseSeeder memanggil semua seeder

5. Controller

Controller dibuat menggunakan perintah php artisan make:controller StudentController. Controller ini berfungsi sebagai pengendali data mahasiswa, mulai dari menampilkan daftar mahasiswa, melihat detail, membuka form tambah data, menyimpan data baru, mengedit data, memperbarui data, sampai menghapus data.

Pada method index(), data mahasiswa diambil menggunakan eager loading dengan with() agar relasi major dan subjects langsung ikut terbaca. Cara ini membantu mencegah masalah N+1 query dan membuat proses pengambilan data menjadi lebih efisien.

StudentController untuk CRUD mahasiswa

6. Routing

Routing ditambahkan pada file web.php menggunakan Route::resource('students', StudentController::class). Route resource membuat seluruh route CRUD terbentuk otomatis, mulai dari index, create, store, show, edit, update, sampai destroy.

Route resource untuk StudentController

7. Views

a) Layout Utama app.blade.php

File app.blade.php dibuat sebagai layout utama. File ini menggunakan Bootstrap untuk merapikan tampilan, menyediakan navbar sederhana, dan menyiapkan tempat konten melalui @yield('content').

Layout utama app.blade.php

b) Halaman Utama index.blade.php

Halaman index.blade.php digunakan untuk menampilkan tabel data mahasiswa. Nama jurusan diambil melalui relasi $student->major->name, sedangkan daftar mata kuliah ditampilkan sebagai badge atau label agar mudah dibaca.

Halaman index.blade.php untuk daftar mahasiswa

c) Halaman Formulir create.blade.php

Halaman ini digunakan untuk menambahkan mahasiswa baru. Form berisi input NIM, nama, alamat, pilihan jurusan, dan pilihan mata kuliah agar data mahasiswa dapat langsung tersambung dengan major dan subject.

Bagian awal form create mahasiswa
Bagian lanjutan form create mahasiswa dengan pilihan jurusan dan mata kuliah

8. Output

Setelah semua bagian selesai dibuat, jalankan php artisan serve, lalu buka halaman http://127.0.0.1:8000/students untuk melihat hasil aplikasi.

Daftar mahasiswa pada halaman students
Form tambah mahasiswa
Halaman detail mahasiswa
Halaman edit mahasiswa

E. Tugas

1. Buat StudentController

Untuk membuat file StudentController, jalankan perintah php artisan make:controller StudentController. Setelah dijalankan, file controller akan terbentuk dan siap diisi dengan logika pengelolaan data mahasiswa.

2. Tambahkan Route untuk StudentController

Route ditambahkan pada file web.php dengan mengarahkan halaman utama ke route students dan menambahkan Route::resource('students', StudentController::class).

Route students pada file web.php

3. Perbarui StudentController

Pada method index(), controller diperbarui untuk menampilkan seluruh mahasiswa beserta jurusan, mata kuliah, dan total SKS. Controller juga mencari jurusan dengan mahasiswa terbanyak, serta mengambil daftar mata kuliah dari salah satu mahasiswa tertentu sebagai contoh relasi.

Pada bagian edit, update, dan destroy, relasi mata kuliah tetap dijaga menggunakan sync() untuk memperbarui pilihan subject dan detach() untuk memutus relasi sebelum data mahasiswa dihapus.

StudentController bagian index sampai store
StudentController bagian edit, update, dan destroy

4. Perbarui Index.blade.php

Halaman index diperbarui dengan dua kotak informasi tambahan untuk menampilkan jurusan dengan mahasiswa terbanyak dan daftar mata kuliah yang diambil oleh mahasiswa tertentu. Pada tabel utama, total SKS juga ditampilkan agar informasi akademik menjadi lebih lengkap.

Bagian awal index.blade.php dengan ringkasan jurusan dan total SKS
Bagian lanjutan index.blade.php untuk tabel mahasiswa

5. Output

Hasil akhir menunjukkan halaman daftar mahasiswa yang sudah dilengkapi informasi jurusan, mata kuliah, total SKS, serta kotak ringkasan data akademik.

Output akhir halaman Student Management

F. Kesimpulan

Melalui praktikum ini, mahasiswa berhasil mempraktikkan proses perancangan relasi One-to-Many dan Many-to-Many menggunakan framework Laravel. Relasi tersebut membantu aplikasi menghubungkan data mahasiswa, jurusan, dan mata kuliah dengan struktur database yang lebih rapi.

Praktikum ini juga menunjukkan pentingnya penggunaan foreign key, model relationship, eager loading, seeder, controller, routing, dan view dalam membangun aplikasi web berbasis database. Dengan pendekatan ini, data yang saling berhubungan dapat ditampilkan secara efisien, kodenya lebih mudah dirawat, dan aplikasi siap dikembangkan menjadi sistem yang lebih besar.

Desain Web

Praktikum 1: Struktur HTML

Tujuan

Memahami struktur dasar dokumen HTML dan penggunaan elemen semantik untuk membangun halaman web yang rapi.

Pembahasan

Praktikum ini membahas penggunaan tag seperti header, main, section, footer, heading, paragraf, link, dan gambar.

Hasil

Halaman web dapat menampilkan informasi profil dengan susunan konten yang mudah dibaca dan sesuai struktur HTML5.

Kesimpulan

HTML menjadi pondasi utama halaman web karena menentukan kerangka dan makna dari setiap bagian konten.

Desain Web

Praktikum 2: CSS Responsive

Tujuan

Mempelajari cara mengatur tampilan web agar nyaman dilihat pada perangkat desktop, tablet, dan mobile.

Pembahasan

Materi mencakup warna, tipografi, spacing, flexbox, grid, hover effect, dan media query.

Hasil

Layout halaman menjadi lebih konsisten, responsif, dan memiliki identitas visual yang sesuai dengan tema portofolio.

Kesimpulan

CSS berperan penting dalam membangun pengalaman pengguna melalui tata letak, estetika, dan responsivitas.

PBO

Praktikum 3: GUI Kalkulator

Tujuan

Menerapkan konsep pemrograman berorientasi objek pada aplikasi kalkulator berbasis GUI.

Pembahasan

Praktikum menggunakan class, object, event listener, input angka, dan operasi aritmatika dasar.

Hasil

Aplikasi kalkulator dapat menjalankan operasi tambah, kurang, kali, dan bagi melalui tombol antarmuka.

Kesimpulan

Konsep event dan object membantu memisahkan tampilan, aksi tombol, dan logika perhitungan.

PBO

Praktikum 4: Aplikasi Laundry

Tujuan

Membuat aplikasi desktop untuk membantu pengelolaan layanan laundry secara sederhana.

Pembahasan

Praktikum mencakup pembuatan menu pelanggan, layanan, pesanan, pengguna, dan laporan.

Hasil

Aplikasi mampu menampilkan form input dan struktur data yang dibutuhkan dalam proses layanan laundry.

Kesimpulan

Penerapan GUI dan struktur class dapat membantu membuat aplikasi desktop yang lebih terorganisir.

Sistem Operasi

Praktikum 5: Custom Ubuntu ISO

Tujuan

Memahami proses remastering sistem operasi Ubuntu agar sesuai kebutuhan penggunaan tertentu.

Pembahasan

Kegiatan meliputi penyesuaian paket aplikasi, tampilan, wallpaper, dan konfigurasi dasar sistem.

Hasil

ISO Ubuntu dapat dikustomisasi dengan aplikasi pendukung dan identitas visual yang sudah ditentukan.

Kesimpulan

Remastering membantu memahami struktur sistem operasi serta cara menyiapkan lingkungan kerja yang siap pakai.

Basis Data

Praktikum 6: CRUD Data

Tujuan

Mempelajari pengelolaan data menggunakan operasi create, read, update, dan delete.

Pembahasan

Praktikum membahas struktur tabel, input data, pembacaan data, perubahan data, dan penghapusan data.

Hasil

Data dapat dikelola melalui proses CRUD sehingga informasi dapat ditambah, ditampilkan, diubah, dan dihapus.

Kesimpulan

CRUD merupakan konsep dasar yang penting dalam pengembangan aplikasi yang berhubungan dengan basis data.