Tutorial RESTful API Laravel 12 #2 : Membuat Model dan Migration


Tutorial RESTful API Laravel 12 #2 : Membuat Model dan Migration

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


Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami