Halo teman-teman semuanya, pada artikel sebelumnya, kita telah belajar bagaimana mengkonfigurasi File System di Laravel 12 untuk menangani file yang diunggah. Kali ini, kita akan membahas cara membuat Model dan Migration di Laravel 12.
Sebelum melangkah lebih jauh, maka kita perlu ketahui terlebih dahulu apa itu Model dan Migration di dalam Laravel, berikut ini penjelasan singkatnya.
Apa Itu Model dan Migration?
-
Model
Model dalam Laravel adalah representasi dari tabel di database. Dengan model, kita bisa berinteraksi dengan data menggunakan sintaks yang lebih sederhana dibandingkan dengan menulis query SQL secara langsung. Model ini berperan sebagai perantara antara aplikasi dan database.
-
Migration
Migration adalah fitur Laravel yang memungkinkan kita untuk mengelola struktur database menggunakan kode. Dengan migration, kita dapat membuat, mengubah, atau menghapus tabel tanpa harus menulis query SQL secara manual. Migration juga membantu dalam menjaga konsistensi struktur database saat bekerja dalam tim.
Setelah mengetahui penjelasan tentang Model dan Migration di dalam Laravel, maka kita akan lanjutkan proses pembuatannya.
Langkah 1 - Konfigurasi Koneksi Database
Langkah pertama dalam membuat Model dan Migration di Laravel 12 adalah mengkonfigurasi koneksi database. Pengaturan ini dilakukan di dalam file .env
.
Silahkan temna-teman buka file .env
, kemudian cari kode berikut ini.
.env
DB_CONNECTION=sqlite
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=laravel
# DB_USERNAME=root
# DB_PASSWORD=
Silahkan ubah kode-nya menjadi seperti berikut ini.
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_laravel_12
DB_USERNAME=root
DB_PASSWORD=
Dari perubahan kode di atas, pertama kita mengubah driver database yang digunakan, yaitu yang sebelumnya menggunakan sqlite
, kita ubah menjadi mysql
.
Kemudian kita hapus semua tanda #
pada konfigurasi key, tujuaanya agar variable-nya diaktifkan. Kemudian untuk DB_DATABASE
kita atur menggunakan db_laravel_12
.
Untuk DB_USERNAME
secara default adalah root
dan untuk DB_PASSWORD
jika teman-teman menggunakan XAMPP
, maka dikosongkan saja.
Setelah melakukan perubahan ini, simpan file .env
dan jalankan perintah berikut untuk memastikan konfigurasi database telah diterapkan:
php artisan config:clear
Langkah 2 - Membuat Model dan Migration
Di Laravel, kita bisa membuat Model dan Migration sekaligus dalam satu perintah artisan. Hal ini bertujuan untuk menghemat waktu saat mengembangkan aplikasi.
Silakan jalankan perintah berikut di terminal/CMD, pastikan berada di dalam folder project Laravel-nya:
php artisan make:model Product -m
Dari perintah di atas, berikut ini penjelasannya.
-
php artisan make:model Product
→ Membuat Model dengan nama Product
.
-
-m
→ Menambahkan flag -m
agar Laravel otomatis membuat file Migration untuk Model tersebut.
INFORMASI: Nama file Migration akan bersifat unik, mengikuti format waktu pembuatannya. Kurang lebih seperti berikut ini YYYY_MM_DD_HHMMSS_create_products_table.php
.
Jika berhasil dijalankan, maka kita akan mendapatkan 2 file baru yang berada di dalam folder:
-
app/Models/Product.php
-
database/migrations/2025_02_25_080603_create_products_table.php
Setelah Model dan Migration berhasil dibuat, langkah berikutnya adalah mengedit file Migration untuk mendefinisikan struktur tabel products
.
Langkah 3 - Menambahkan Field / Kolom di Migration
Sekarang kita akan lanjutkan menambahkan sebuah field-field atau kolom di dalam file migration. Silahkan teman-teman buka file berikut ini database/migrations/
, kemudian pada function up
ubah kode-nya menjadi seperti berikut ini.
database/migrations/2025_02_25_080603_create_products_table.php
public function up(): void
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('image');
$table->string('title');
$table->text('description');
$table->bigInteger('price');
$table->integer('stock')->default(0);
$table->timestamps();
});
}
Dari perubahan kode di atas, kita menambahkan 5 field, yaitu :
FIELD / KOLOM |
TIPE DATA |
OPTION |
image |
string |
- |
title |
string |
- |
description |
text |
- |
price |
bigInteger |
- |
stock |
integer |
nilai default 0 |
Langkah 4 - Konfigurasi Mass Assigment
Mass Assignment di Laravel adalah fitur yang memungkinkan kita untuk mengisi beberapa kolom database sekaligus menggunakan array data. Ini sering digunakan saat menyimpan data dari sebuah form ke database melalui model Eloquent.
Laravel melindungi Model dari mass assignment secara default untuk mencegah serangan Mass Assignment Vulnerability, di mana pengguna dapat mengisi kolom yang tidak diizinkan, seperti role pengguna atau hak akses.
Silahkan teman-teman buka file app/Models/Product.php
, kemudian ubah semua kode-nya menjadi seperti berikut ini.
app/Models/Product.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasFactory;
/**
* fillable
*
* @var array
*/
protected $fillable = [
'image',
'title',
'description',
'price',
'stock',
];
}
Dari perubahan kode di atas, kita tambahkan properti $fillable
. Properti ini digunakan untuk menentukan field/kolom mana saja yang boleh diisi.
Langkah 5 - Menjalankan Migration
Setelah berhasil menambahkan field atau kolom di dalam file Migration dan menambahkan Mass Assigment di dalam Model, maka kita akan lanjutkan belajar menjalankan proses migrate.
Dengan menjalankan proses migrate, maka field/kolom yang sudah kita definisikan di dalam file migration akan digenerate ke dalam database.
Silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD dan pastikan berada di dalam project Laravel-nya.
php artisan migrate
Jika keluar output seperti berikut ini. Itu artinya kita belum memiliki database di dalam MySQL dengan nama db_laravel_12
dan apakah kita ingin membuatnya ? Silahkan pilih Yes
dan ENTER.
WARN The database 'db_laravel_12' does not exist on the 'mysql' connection.
┌ Would you like to create it? ────────────────────────────────┐
│ ● Yes / ○ No │
└──────────────────────────────────────────────────────────────┘

Dan jika teman-teman cek pada PhpMyAdmin di http://localhost/phpmyadmin, maka table-table akan berhasil digenerate berserta field-field di dalamnya.

Kesimpulan
Pada artikel ini, kita telah belajar tentang konsep Model dan Migration di Laravel 12. Kita juga telah mempraktikkan cara membuat Model dan Migration, menambahkan field atau kolom dalam Migration, serta memahami Mass Assignment di dalam Model. Terakhir, kita telah menjalankan proses migrate untuk menerapkan perubahan ke database.
Pada artikel selanjutnya, kita semua akan belajar bagaimana cara menampilkan data dari database di dalam Laravel 12.
Terima Kasih