Laporan Praktikum Pekan 7 - Migration, Seeding, Routing, Model, Controller, dan View

Praktikum Pemrograman Web


Tujuan Praktikum

Memahami konsep dasar pengembangan aplikasi web berbasis framework Laravel dengan menerapkan pola MVC (Model View Controller), Melatih kemampuan mahasiswa dalam mengelola database, routing, model, controller, dan view pada framework Laravel, dan Mengimplementasikan seluruh materi praktikum dalam bentuk aplikasi CRUD (Create, Read, Update, Delete) sederhana.

Langkah Kerja Praktikum

Persiapan Sistem:

Teori dan Langkah-Langkah:

  1. Konfigurasi Database pada file .env, konfigurasi seperti berikut:
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=praktikum-laravel
    DB_USERNAME=root
    DB_PASSWORD=
  2. Membuat tabel products menggunakan migration, jalankan perintah berikut pada terminat untuk membuat tabel:
    php artisan make:migration create_products_table
    File migration akan berada pada folder database/migrations.
  3. Jalankan migration menggunakan perintah php artisan migrate, maka tabel products akan terbuat otomatis.
  4. php artisan migrate:rollback untuk membatalkan proses migration, dan php artisan migrate:fresh untuk memulai ulang semua proses migration.
  5. Membuat seeder untuk mengisi data awal ke database, jalankan perintah berikut ini pada terminal:
    php artisan make:seeder ProductSeeder
    File seeder akan berada pada folder database/seeders.
  6. Membuat data seeder dengan mengisikan file ProductSeeder.php, seperti berikut:
    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()
    ]
    ]);
  7. Tambahkan pemanggilan seeder pada file DatabaseSeeder.php, dengan script: $this->call(ProductSeeder::class);
    Jalankan seeder dengan perintah php artisan db:seed atau php artisan migrate:fresh --seed untuk menjalankan seeding bersamaan dengan migration.
  8. Routing terdiri dari beberapa jenis, yaitu routing dasar, routing parameter, named route, dan route group.
    Contoh routing parameter:
    Route::get('/produk/{$id}', function ($id) {
    return 'Produk ID: ' . $id;
    });

    Route ini dapat diakses pada http://127.0.0.1:8000/produk/1
  9. Buat file Product.php pada folder app/models.
  10. Controller digunakan sebagai logika aplikasi yang menghubungkan model dan view. Untuk membuat controller jalankan perintah berikut ini:
    php artisan make:controller ProductController
    File controller akan berada pada folder app/Http/Controllers.
  11. Buka file ProductController.php yang sudah dibuat sebelumnya, tambahkan method pada controller tersebut.
    Hubungkan route ke controller dengan menambahkan script Route::get('/products', [ProductController::class, 'index']); pada file web.php
    Lalu hubungkan controller dengan view, isikan pada method index di ProductController dengan script berikut:
    $products = [
    'Laptop',
    'Mouse',
    'Keyboard'
    ];
    return view ('products', compact('products'));

    Atau hubungkan controller dengan model agar langsung mengambil data dari database, dengan menambahkan script berikut pada method index:
    $products = Product::all();
    return view ('products', compact('products'));
  12. Membuat view dengan nama products.blade.php pada folder resources/views/ yang bertujuan untuk menampilkan halaman kepada pengguna.
    Isikan file view dengan script html berikut pada bagian body <h1>Daftar Produk</h1>
  13. Tampilkan view dari route dengan menambahkan script berikut pada file web.php:
    Route::get('/products', function () {
    return view('products');
    });
  14. Untuk menampilkan data pada blade, tambahkan script berikut pada file products.blade.php:
    <ul>
    @foreach ($products as $product)
    <li>{{ $product }}</li>
    @endforeach
    </ul>

    Jalankan dengan akses URL http://127.0.0.1:8000/products
    LaporanDua-1
  15. Buat sebuah blade layout yang akan digunakan untuk membuat sebuah template yang dapat digunakan untuk banyak halaman.
    Buat folder layouts didalam resource/views/ terlebih dahulu, lalu buat file app.blade.php didalam folder tersebut. Tambahkan script html berikut pada bagian body:
    <h1>Aplikasi Laravel</h1>
    @yield('content')
  16. Selanjutnya ganti isi file products.blade.php dengan script berikut untuk menggunakan layout pada view blade:
    @extends('layouts.app')
    @section('title', 'Products')
    @section('content')
    <h1>Daftar Produk</h1>
    <ul>
    @foreach ($products as $product)
    <li>{{ $product->name }}</li>
    @endforeach
    </ul>
    @endsection

Tugas Praktikum:
Buatkan migration, seeding, model, route, controller, view untuk CRUD data mahasiswa.

  1. Buat migration, seeding, model, dan controller Mahasiswa dengan menjalankan perintah berikut:
    php artisan make:model Mahasiswa -mcs
  2. Ganti file controller dengan perintah berikut ini untuk membuat fungsi CRUD pada controller:
    php artisan make:controller MahasiswaController --resource
  3. Buka file migration, tambahkan script berikut pada function up() untuk mengisikan field tabel mahasiswa:
    $table->id();
    $table->string('nama');
    $table->string('nim')->unique();
    $table->string('jurusan');
    $table->timestamps();

    Lalu jalankan perintah php artisan migrate untuk memulai proses migration.
  4. Buka file seeder, isikan data awal pada function run(), dengan script berikut:
    DB::table('mahasiswas')->insert([
    [
    'nama' => 'Teguh Esa Maulanna',
    'nim' => '2411532005',
    'jurusan' => 'Informatika',
    'created_at' => now(),
    'updated_at' => now(),
    ],
    ]);
  5. Pada file DatabaseSeeder.php tambahkan script berikut this->call(MahasiswaSeeder::class); untuk memanggil seeder mahasiswa.
    Jalankan perintah php artisan migrate:fresh --seed.
  6. Buka file model, tambahkan script berikut untuk menghubungkan model dengan tabel mahasiswa:
    protected $fillable = [
    'nama',
    'nim',
    'jurusan',
    ];
  7. Untuk membuat route yang akan menghubungkan controller dengan view, tambahkan script berikut pada file web.php:
    use App\Http\Controllers\MahasiswaController;
    Route::resource('mahasiswas', MahasiswaController::class);
  8. Buka file contoller,tambahkan script berikut untuk membuat fungsi CRUD dan menghubungkan model dengan view:
    function index() untuk menampilkan semua data
    $mahasiswas = Mahasiswa::all();
    return view('mahasiswas.index', compact('mahasiswas'));

    function create() untuk menampilkan form penambahan data
    return view('mahasiswas.create');
    function store() untuk menyimpan data baru
    Mahasiswa::create($request->all());
    return redirect()->route('mahasiswas.index');

    function edit() untuk menampilkan form edit data
    return view('mahasiswas.edit', compact('mahasiswa'));
    function update() untuk memperbarui data
    $mahasiswa->update($request->all());
    return redirect()->route('mahasiswas.index');

    function destroy() untuk mneghapus data
    $mahasiswa->delete();
    return redirect()->route('mahasiswas.index');
  9. Modifikasi layout views pada file app.blade.php dengan script berikut:
    <h1>Data Mahasiswa</h1>
    @yield('content')
  10. Untuk membuat view dari CRUD mahasiswa, buat folder mahasiswas didalam resources/views/, lalu buat file:
    • index.blade.php
    • create.blade.php
    • edit.blade.php
  11. Jalankan perintah php artisan serve, dan akses URL http://127.0.0.1:8000/mahasiswas
  12. Output program:
    LaporanDua-2 LaporanDua-3 LaporanDua-4

Kesimpulan

Dari praktikum ini kita telah mempelajari bahwa, dengan framework laravel dapat mempermudah proses pengembangan aplikasi web dengan menerapkan konep MVC. Kita telah mempelajari cara konfigurasi database, pembuatan migration, seeding, routing, model, controller, dan view menggunakan Blade Template. Kita juga telah mengimplementasikan CRUD dalam aplikasi sederhana untuk mengelola data yang ada.

Repository Github

Repository project ini dapat diakses melalui link berikut:
https://github.com/teguhsmlnna666/WebPortofolio