Halo teman-teman semuanya, pada artikel sebelumnya kita telah berhasil belajar bagaimana cara membuat project Laravel 12 dan pada artikel ini kita akan belajar membuat Model dan Migration di dalam Laravel 12.
Langkah 1 - Konfigurasi Koneksi Database
Sebelum kita membuat Model dan Migration, tentu kita harus melakukan konfigurasi koneksi database terlebih dahulu di dalam Laravel.
Untuk melakukan konfigurasi database di dalam Laravel cukup mudah, silahkan teman-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=
Kemudian ubah menjadi seperti berikut ini.
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_laravel12_api
DB_USERNAME=root
DB_PASSWORD=
Di atas, pertama kita ubah driver koneksinya yang semula menggunakan sqlite
menjadi mysql
. Kemudian untuk DB_DATABASE
kita ubah menjadi db_laravel12_api
,
Sedangkan untuk DB_USERNAME
kita isi dengan root
dan untuk DB_PASSWORD
silahkan dikosongkan saja (jika menggunakan XAMPP).
Langkah 2 - Membuat Model dan Migration
Setelah berhasil melakukan konfigurasi koneksi database di dalam Laravel 12, maka kita bisa lanjutkan belajar membuat Model dan Migration.
Silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam project Laravel-nya.
php artisan make:model Product -m
Jika berhasil, maka kita akan mendapatkan 2 file baru yang berada di dalam folder :
app/Models/Product.php
database/migrations/2025_03_26_012027_create_products_table.php
INFORMASI : untuk nama file migration akan random sesuai tanggal pembuatannya.
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/2025_03_26_012027_create_products_table.php
, kemudian pada function up
ubah kode-nya menjadi seperti berikut ini.
database/migrations/2025_03_26_012027_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 adalah fitur di Laravel yang memungkinkan kita untuk mengisi beberapa kolom database sekaligus menggunakan array data. Ini sangat berguna dalam proses create dan update, terutama saat menggunakan Eloquent Model.
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\Model;
class Product extends Model
{
/**
* 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
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_laravel12_api
dan apakah kita ingin membuatnya ? Silahkan pilih Yes
dan ENTER.
WARN The database 'db_laravel12_api' 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.

Langkah 6 - Menambahkan Accessor di Model
Accessor memungkinkan kita mengubah nilai saat field diakses. Untuk mendefinisikan Accessor, kita bisa membuat method di dalam Model untuk menentukan field yang akan diakses.
Sekarang kita akan membuat Accessor di dalam Model untuk field image
, jadi silahkan teman-teman buka file app/Models/Product.php
, kemudian ubah kode-nya menjadi seperti berikut ini.
app/Models/Product.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;
class Product extends Model
{
/**
* fillable
*
* @var array
*/
protected $fillable = [
'image',
'title',
'description',
'price',
'stock',
];
/**
* image
*
* @return Attribute
*/
protected function image(): Attribute
{
return Attribute::make(
get: fn ($image) => url('/storage/products/' . $image),
);
}
}
Dari perubahan kode di atas, pertama kita import Cast Attribute
.
use Illuminate\Database\Eloquent\Casts\Attribute;
kemudian kita membuat method baru dengan nama image()
. Di dalam method ini kita melakukan return field image
agar menghasilkan full path URL dari folder storage.
Jadi ketika kita memanggil field image
makan akan otomatis menghasilkan output seperti berikut ini.
domain.com/storage/products/nama_file_image.webp
Kesimpulan
Pada artikel kali ini, kita semua telah belajar bagaimana melakukan konfigurasi koneksi database di dalam Laravel 12, membuat Model, Migration dan menjalankan proses Migrate, kemudian kita juga belajar menambahkan Accessor di dalam Model.
Pada artikel selanjutnya, kita semua akan belajar bagaimana cara membuat dan konfigurasi API Resources di dalam Laravel 12.
Terima Kasih