Praktikum 7

Praktikum Laravel 12 – Migration, Seeding, Routing, Model, Controller, View

Dokumentasi lapangan praktikum web menggunakan Laravel 12 dengan fokus pada pembuatan tabel, data seeding, resource route, Eloquent model, controller CRUD, dan tampilan Blade.

Laravel MVC workflow

Ringkasan Praktikum 7

Laporan lengkap migrasi database, data seeding, routing resource, model Eloquent, pengendali resource, dan tampilan Blade untuk entitas Product, Customer, dan Mahasiswa.

Migration & Seeding

Membangun struktur tabel dan memasukkan data awal untuk pengujian cepat aplikasi.

Routing Resource

Memanfaatkan resource route Laravel untuk menghasilkan route CRUD secara otomatis.

Blade View

Menampilkan data dengan struktur halaman yang konsisten dan profesional menggunakan template Blade.

1. Konfigurasi Database

Tahap awal praktikum adalah membangun koneksi database yang stabil. Database praktikum_laravel dibuat melalui phpMyAdmin XAMPP dan kemudian disambungkan ke aplikasi Laravel di file .env.

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

Setelah konfigurasi selesai, Laravel berhasil terhubung dengan MySQL sehingga perintah migrasi dan seeding dapat dieksekusi.

Hasil

Koneksi database aktif, lingkungan pengembangan siap, dan struktur migrasi dapat dibuat tanpa error.

2. Migration

Migration digunakan untuk mendefinisikan struktur tabel dengan kode sehingga perubahan dapat dilacak dan direset.

2.1 Migration Product

Membuat tabel products untuk menyimpan data barang.

php artisan make:migration create_products_table

Isi migration:

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

2.2 Migration Customer

Membuat tabel customers untuk menyimpan informasi pelanggan.

php artisan make:migration create_customers_table

Isi migration:

Schema::create('customers', function (Blueprint $table) {
    $table->id();
    $table->string('nama');
    $table->string('email')->unique();
    $table->string('telepon');
    $table->text('alamat');
    $table->timestamps();
});

2.3 Migration Mahasiswa

Membuat tabel mahasiswas sebagai data akademik mahasiswa.

php artisan make:migration create_mahasiswas_table

Isi migration:

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

Menjalankan Migration

Setelah seluruh migration selesai dibuat, perintah berikut dieksekusi untuk membuat tabel di database:

php artisan migrate
Hasil

Berhasil membuat tabel products, customers, dan mahasiswas di database praktikum_laravel tanpa error.

3. Seeding

Seeder digunakan untuk mengisi database dengan data dummy sehingga aplikasi dapat diuji tanpa masukan manual.

3.1 Product Seeder

Membuat dua data produk awal untuk pengujian daftar produk.

php artisan make:seeder ProductSeeder

Isi seeder:

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(),
    ]
]);

3.2 Customer Seeder

Membuat tiga data customer untuk menguji daftar dan detail pelanggan.

php artisan make:seeder CustomerSeeder

Isi seeder:

DB::table('customers')->insert([
    [
        'nama' => 'Alya Pratama',
        'email' => 'alya@example.com',
        'telepon' => '081234567890',
        'alamat' => 'Jalan Merdeka No. 12, Jakarta',
    ],
    [
        'nama' => 'Budi Santoso',
        'email' => 'budi@example.com',
        'telepon' => '082345678901',
        'alamat' => 'Jalan Mawar No. 9, Bandung',
    ],
    [
        'nama' => 'Citra Dewi',
        'email' => 'citra@example.com',
        'telepon' => '083456789012',
        'alamat' => 'Jalan Melati No. 7, Surabaya',
    ]
]);

3.3 Mahasiswa Seeder

Class seed sederhana untuk data mahasiswa tunggal sebagai contoh entitas akademik.

php artisan make:seeder MahasiswaSeeder

Isi seeder:

DB::table('mahasiswas')->insert([
    [
        'nim' => '2411533018',
        'nama' => 'Karimah Irsyadiyah',
        'jurusan' => 'Informatika',
        'email' => 'karimah@unand.ac.id',
        'angkatan' => 2024,
    ]
]);

Daftarkan Seeder

Seeder didaftarkan di file database/seeders/DatabaseSeeder.php agar dapat berjalan bersama.

$this->call(ProductSeeder::class);
$this->call(CustomerSeeder::class);
$this->call(MahasiswaSeeder::class);
Perintah Jalankan Seeder
php artisan db:seed

Database terisi otomatis dengan data awal sehingga fitur read dan list dapat diuji.

4. Model

Model Eloquent menghubungkan tabel database dengan aplikasi sehingga data dapat diolah secara objek.

4.1 Product Model

php artisan make:model Product

Tambahkan atribut yang dapat diisi massal.

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

4.2 Customer Model

php artisan make:model Customer

Konfigurasi mass assignment untuk entitas pelanggan.

protected $fillable = [
    'nama',
    'email',
    'telepon',
    'alamat'
];

4.3 Mahasiswa Model

php artisan make:model Mahasiswa

Menentukan kolom yang boleh diisi saat CRUD Mahasiswa dijalankan.

protected $fillable = [
    'nim',
    'nama',
    'jurusan',
    'email',
    'angkatan'
];

5. Routing

Routing menghubungkan URL dengan controller. Resource route Laravel menghasilkan semua route CRUD dalam satu deklarasi.

Route::resource('products', ProductController::class);
Route::resource('customers', CustomerController::class);
Route::resource('mahasiswa', MahasiswaController::class);

Route resource membuat method index, create, store, show, edit, update, dan destroy secara otomatis.

Keuntungan
  • Mengurangi duplikasi route
  • Standarisasi naming convention
  • Mudah dikelola pada aplikasi CRUD

6. Controller

Controller bertanggung jawab menerima permintaan, memproses model, dan mengirim data ke tampilan.

6.1 Product Controller

php artisan make:controller ProductController --resource

Contoh method index() untuk mengambil semua product.

public function index()
{
    $products = Product::all();

    return view('products.index', compact('products'));
}

6.2 Customer Controller

php artisan make:controller CustomerController --resource

Contoh method index() untuk menampilkan daftar customer.

public function index()
{
    $customers = Customer::all();

    return view('customers.index', compact('customers'));
}

6.3 Mahasiswa Controller

php artisan make:controller MahasiswaController --resource

Contoh method index() untuk menampilkan semua mahasiswa.

public function index()
{
    $mahasiswas = Mahasiswa::all();

    return view('mahasiswa.index', compact('mahasiswas'));
}

Fungsi Tambahan

Selain index(), controller resource biasa juga berisi store(), update(), dan destroy() untuk operasi CRUD penuh.

Hasil

Kelas controller mampu mengelola aliran data antara model dan view sesuai standar MVC Laravel.

7. View

View menampilkan data kepada pengguna melalui Blade template dengan struktur halaman yang jelas.

7.1 View Product

Folder dan file view untuk entitas products.

resources/views/products
- index.blade.php
- create.blade.php
- edit.blade.php
- show.blade.php

Fungsi: menampilkan daftar, menambah, mengedit, dan detail produk.

7.2 View Customer

Folder dan file view untuk entitas customers.

resources/views/customers
- index.blade.php
- create.blade.php
- edit.blade.php
- show.blade.php

Fungsi: menampilkan daftar, menambah, mengedit, dan detail customer.

7.3 View Mahasiswa

Folder dan file view untuk entitas mahasiswa.

resources/views/mahasiswa
- index.blade.php
- create.blade.php
- edit.blade.php
- show.blade.php

Fungsi: menampilkan daftar, menambah, mengedit, dan detail mahasiswa.

8. Implementasi CRUD

Praktikum berhasil menerapkan operasi CRUD untuk Product, Customer, dan Mahasiswa.

Product
  • Menambah data produk
  • Menampilkan daftar produk
  • Mengubah data produk
  • Menghapus produk
Customer
  • Menambah data customer
  • Menampilkan daftar customer
  • Mengubah data customer
  • Menghapus customer
Mahasiswa
  • Menambah data mahasiswa
  • Menampilkan daftar mahasiswa
  • Mengubah data mahasiswa
  • Menghapus mahasiswa

9. Kesimpulan

Praktikum 7 memperkuat prinsip MVC Laravel dengan membuat layer database, model, controller, dan view secara terpisah namun terintegrasi. Penggunaan migration dan seeder membantu manajemen data, sedangkan resource route dan controller resource mempermudah alur CRUD.

Implementasi pada entitas Product, Customer, dan Mahasiswa menunjukkan bahwa Laravel dapat memfasilitasi pengembangan aplikasi web terstruktur dengan Eloquent ORM dan Blade Template Engine.

Hasil Akhir

Aplikasi berhasil mengelola data produk, pelanggan, dan mahasiswa dengan CRUD lengkap serta tampilan responsif yang siap digunakan sebagai dasar portfolio proyek Laravel.

Dokumentasi Hasil

Placeholder screenshot untuk dokumentasi praktikum. Gambar dapat diganti setelah diambil dari aplikasi.

Screenshot halaman Product
Screenshot halaman Product
Screenshot tambah Product
Screenshot tambah Product
Screenshot edit Product
Screenshot edit Product
Screenshot detail Product
Screenshot detail Product
Screenshot halaman Customer
Screenshot halaman Customer
Screenshot tambah Customer
Screenshot tambah Customer
Screenshot edit Customer
Screenshot edit Customer
Screenshot halaman Mahasiswa
Screenshot halaman Mahasiswa
Screenshot tambah Mahasiswa
Screenshot tambah Mahasiswa
Screenshot edit Mahasiswa
Screenshot edit Mahasiswa

Karimah Irsyadiyah

Mahasiswa Informatika, Universitas Andalas

Profil Profesional

Kariamah Irsyadiyah adalah seorang mahasiswa Informatika di Universitas Andalas dengan minat dalam pengembangan web menggunakan framework Laravel.