Buka:
http://localhost/phpmyadmin/
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
protected $tableSecara bawaan (default), Laravel akan menganggap nama tabel di database menggunakan bentuk jamak dalam bahasa Inggris (misal model
Mahasiswa-> tabelmahasiswas).Jika nama tabel di MySQL Anda berbeda (misalnya
tbl_mahasiswa), Anda wajib mendefinisikannya:PHPprotected $table = 'tbl_mahasiswa';
protected $primaryKeyDefault primary key di Laravel adalah
id. Jika tabel Anda menggunakan nama kolom primary key lain (misalnim), definisikan seperti ini:PHPprotected $primaryKey = 'nim';
protected $fillableProperti ini digunakan untuk keamanan (Mass Assignment Protection). Kolom yang dicantumkan di dalam array inilah yang diizinkan untuk diisi menggunakan perintah
Mahasiswa::create($request->all()).
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:PHPprotected $guarded = [];
public $timestampsDefault bernilai
true. Jika tabel di MySQL Anda tidak memiliki kolomcreated_atdanupdated_at, ubah menjadifalseagar tidak terjadi error saat melakukan simpan data:PHPpublic $timestamps = false;Langkah 7: Buat Controller Menggunakan Artisan
Buka terminal Git Bash di Visual Studio Code, lalu jalankan perintah berikut:
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
use App\Models\Mahasiswa;Berfungsi untuk menghubungkan Controller dengan Model
Mahasiswaagar Controller dapat membaca dan menyimpan data ke tabel database MySQL.
Mahasiswa::all()Method Eloquent ORM untuk mengambil seluruh record/baris data yang ada pada tabel
mahasiswas.
compact('dataMahasiswa')Digunakan untuk membungkus variabel
$dataMahasiswaagar bisa diakses di dalam file view (tabel.blade.php).
$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 tabelmahasiswas.
Mahasiswa::create([...])Menyimpan data baru secara otomatis ke kolom
nim,nama, dankelaspada tabel database MySQL.
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






