Search This Blog

Home » » mengintegrasikan form dan tabel dengan Database MySQL menggunakan Migration dan Model di Laravel.

mengintegrasikan form dan tabel dengan Database MySQL menggunakan Migration dan Model di Laravel.

Buka:

http://localhost/phpmyadmin/ 


Pastikan aplikasi MySQL (seperti XAMPP / Laragon) sudah berjalan dan Anda telah membuat database kosong bernama db_mahasiswa di phpMyAdmin.


Langkah 1: Konfigurasi Database di File .env

Buka file .env di direktori utama proyek Anda, lalu sesuaikan bagian konfigurasi database (misalnya jika menggunakan XAMPP/Laragon):

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=db_mahasiswa

DB_USERNAME=root

DB_PASSWORD=


Langkah 2: Buat Model dan Migration

Jalankan perintah berikut di terminal Git Bash untuk membuat file Model Mahasiswa sekaligus file Migration-nya:

php artisan make:model Mahasiswa -m 


Langkah 3: Edit File Migration

Buka file migration yang baru saja terbuat di folder database/migrations/YYYY_MM_DD_HHMMSS_create_mahasiswas_table.php, lalu tambahkan kolom tabel berikut:

public function up(): void

{

    Schema::create('mahasiswas', function (Blueprint $table) {

        $table->id();

        $table->string('nim')->unique();

        $table->string('nama');

        $table->string('kelas');

        $table->timestamps();

    });

}


Setelah itu, jalankan migrasi database di terminal:

php artisan migrate

Langkah 4: Konfigurasi Model Mahasiswa.php

Buka file app/Models/Mahasiswa.php dan tambahkan properti $fillable agar data kolom dapat diisi secara masal (mass assignment):

Langkah 5: Kode Lengkap Konfigurasi Mahasiswa.php

Buka file Mahasiswa.php dan sesuaikan kodenya seperti berikut:

<?php


namespace App\Models;


use Illuminate\Database\Eloquent\Factories\HasFactory;

use Illuminate\Database\Eloquent\Model;


class Mahasiswa extends Model

{

    use HasFactory;


    // 1. Menentukan nama tabel di database (Opsional jika sesuai konvensi jamak/plural)

    protected $table = 'mahasiswas';


    // 2. Menentukan Primary Key tabel (Opsional, default: 'id')

    protected $primaryKey = 'id';


    // 3. Menentukan kolom yang boleh diisi secara massal (Mass Assignment)

    protected $fillable = [

        'nim',

        'nama',

        'kelas',

    ];


    // 4. Pengaturan Timestamps (created_at & updated_at)

    public $timestamps = true;

}

Penjelasan Properti Konfigurasi Model

  1. protected $table

    • Secara bawaan (default), Laravel akan menganggap nama tabel di database menggunakan bentuk jamak dalam bahasa Inggris (misal model Mahasiswa -> tabel mahasiswas).

    • Jika nama tabel di MySQL Anda berbeda (misalnya tbl_mahasiswa), Anda wajib mendefinisikannya:

      PHP
      protected $table = 'tbl_mahasiswa';
      
  2. protected $primaryKey

    • Default primary key di Laravel adalah id. Jika tabel Anda menggunakan nama kolom primary key lain (misal nim), definisikan seperti ini:

      PHP
      protected $primaryKey = 'nim';
      
  3. protected $fillable

    • Properti ini digunakan untuk keamanan (Mass Assignment Protection). Kolom yang dicantumkan di dalam array inilah yang diizinkan untuk diisi menggunakan perintah Mahasiswa::create($request->all()).

  4. protected $guarded (Alternatif dari $fillable)

    • Berfungsi sebagai kebalikan dari $fillable. Kolom yang dimasukkan di sini tidak boleh diisi secara massal. Jika ingin mengizinkan semua kolom diisi tanpa batasan:

      PHP
      protected $guarded = [];
      
  5. public $timestamps

  6. Default bernilai true. Jika tabel di MySQL Anda tidak memiliki kolom created_at dan updated_at, ubah menjadi false agar tidak terjadi error saat melakukan simpan data:

    PHP
    public $timestamps = false;

    Langkah 7: Buat Controller Menggunakan Artisan

    Buka terminal Git Bash di Visual Studio Code, lalu jalankan perintah berikut:

php artisan make:controller LatihanController

Langkah 8 : Kode Lengkap LatihanController.php

Buka file app/Http/Controllers/LatihanController.php dan ganti isinya dengan kode berikut:

<?php


namespace App\Http\Controllers;


use Illuminate\Http\Request;

use App\Models\Mahasiswa; // 1. Import Model Mahasiswa untuk akses Database


class LatihanController extends Controller

{

    /**

     * Menampilkan halaman tabel berisi daftar data mahasiswa

     */

    public function getTabel()

    {

        // Ambil semua data mahasiswa dari tabel 'mahasiswas' di MySQL

        $dataMahasiswa = Mahasiswa::all();


        // Kirim variabel $dataMahasiswa ke view 'tabel.blade.php'

        return view('tabel', compact('dataMahasiswa'));

    }


    /**

     * Menampilkan halaman form untuk input data mahasiswa

     */

    public function getForm()

    {

        return view('form');

    }


    /**

     * Memproses dan menyimpan data yang dikirim dari form ke database

     */

    public function simpanForm(Request $request)

    {

        // 2. Validasi Input Form

        $request->validate([

            'nim'   => 'required|unique:mahasiswas,nim',

            'nama'  => 'required',

            'kelas' => 'required',

        ], [

            // Pesan Error Kustom (Opsional)

            'nim.required'   => 'NIM wajib diisi!',

            'nim.unique'     => 'NIM sudah terdaftar di database!',

            'nama.required'  => 'Nama Lengkap wajib diisi!',

            'kelas.required' => 'Kelas wajib diisi!',

        ]);


        // 3. Simpan Data ke Database menggunakan Model Mahasiswa

        Mahasiswa::create([

            'nim'   => $request->nim,

            'nama'  => $request->nama,

            'kelas' => $request->kelas,

        ]);


        // 4. Alihkan (Redirect) ke halaman tabel disertai pesan sukses

        return redirect()->route('mahasiswa.tabel')->with('success', 'Data mahasiswa berhasil disimpan!');

    }

}

Penjelasan Komponen Penting Controller

  1. use App\Models\Mahasiswa;

    • Berfungsi untuk menghubungkan Controller dengan Model Mahasiswa agar Controller dapat membaca dan menyimpan data ke tabel database MySQL.

  2. Mahasiswa::all()

    • Method Eloquent ORM untuk mengambil seluruh record/baris data yang ada pada tabel mahasiswas.

  3. compact('dataMahasiswa')

    • Digunakan untuk membungkus variabel $dataMahasiswa agar bisa diakses di dalam file view (tabel.blade.php).

  4. $request->validate([...])

    • Memastikan data yang dikirim pengguna dari form memenuhi aturan:

      • required: Wajib diisi (tidak boleh kosong).

      • unique:mahasiswas,nim: Nilai NIM tidak boleh sama dengan NIM yang sudah ada di tabel mahasiswas.

  5. Mahasiswa::create([...])

    • Menyimpan data baru secara otomatis ke kolom nim, nama, dan kelas pada tabel database MySQL.

  6. redirect()->route('mahasiswa.tabel')->with('success', ...)

    • Mengalihkan halaman kembali ke route tabel (/tabel) sambil membawa pesan flash session yang mengonfirmasi bahwa simpan data berhasil.

Langkah 9:
File Routes (routes/web.php)


https://gemini.google.com/u/2/app/e6255afb79cd7c74?pageId=none

Jika Anda menyukai Artikel di blog ini, Silahkan klik disini untuk berlangganan gratis via email, dengan begitu Anda akan mendapat kiriman artikel setiap ada artikel yang terbit di Creating Website
Comments
0 Comments

0 komentar:

 
Support : Creating Website | Johny Template | Mas Template
Copyright © 2012. Bahan Ajar - All Rights Reserved
Template Modify by Agung Baitul H (0898-1983-200)
Proudly powered by Blogger E-Mail agung.abl@bsi.ac.id