Tutorial Laravel 12 RESTful API #2 Model dan MIgration

Pelajari cara membuat RESTful API menggunakan Laravel 12 dalam tutorial lengkap ini. Mulai dari instalasi, konfigurasi, hingga implementasi dan fitur CRUD, tutorial ini akan membantu Anda memahami konsep API yang efisien dan aman di Laravel 12.

✅ Telah dilihat 2092 kali

Rating: 5.00 ⭐

... 12 March 2025, 14:15

Model dan Migrasi


Pada studi kasus kali ini, kita akan membuat API CRUD data product yang meliputi nama product, deskripsi, stok dan harga produk. Silakan jalankan perintah berikut untuk membuat model dan migrasinya:

php artisan make:model Product -m

Perintah diatas akan menghasilkan 2 file baru, yaitu model dan migrasi.

Migrations


Silakan buka file migration yang baru saja terbuat, kemudian pada function up ubah menadi seperti dibawah ini:

public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->decimal('price', 10, 2);
            $table->text('description')->nullable();
            $table->integer('stock')->default(0);
            $table->timestamps();
        });
    }

Kode diatas berfungsi untuk membuat table dan column didalam database, adapun rincian type data bisa dilihat melalui table dibawah ini:

Nama Kolom Tipe Data Panjang/Presisi Nullable Default Keterangan
id bigint (unsigned) - Tidak AUTO_INCREMENT Primary key (id unik)
name varchar 255 Tidak - Nama produk
price decimal 10,2 Tidak - Harga produk dengan 10 digit total dan 2 digit desimal
description text - Ya NULL Deskripsi produk (boleh kosong)
stock integer - Tidak 0 Jumlah stok produk, default 0
created_at timestamp - Ya NULL Waktu pembuatan (otomatis diisi oleh Laravel)
updated_at timestamp - Ya NULL Waktu terakhir diperbarui (otomatis diisi oleh Laravel)

Kolom timestamps() otomatis membuat kolom created_at dan updated_at. Sehingga kode migrasi kita secara keseluruhan akan terlihat seperti berikut ini:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->decimal('price', 10, 2);
            $table->text('description')->nullable();
            $table->integer('stock')->default(0);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('products');
    }
};

Langkah berikutnya adalah menjalankan migrasi dengan cara memasukkan command line berikut ini kedalam CMD/Terminal dan tentunya berada didalam direktori project laravel-api kita.

php artisan migrate

Model


Silakan buka file model yang sudah dibuat diawal tadi, file ini terletak didalam folder app/Models/ kemudian sesuaikan menjadi seperti dibawha ini:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use HasFactory;

    protected $fillable = ['name', 'price', 'description', 'stock'];
}

$fillable adalah daftar kolom yang boleh diisi secara massal dengan metode create() atau update(). Dengan ini, kita bisa langsung menyimpan data seperti berikut ini:

Product::create([
    'name' => 'Laptop',
    'price' => 15000000,
    'description' => 'Laptop gaming terbaru',
    'stock' => 10
]);

Model Product ini berfungsi sebagai perwakilan tabel products dalam database, mempermudah CRUD operations dan Laravel hanya akan menerima input untuk kolom yang ada dalam $fillable. Pada materi berikutnya, kita akan membuat validasi data input menggunakan ProductRequest. Sampai jumpa pada materi berikutnya.

Daftar eBook