Logo
© 2019 - 2026 SantriKoding.

On This Page

Mobile navigation

Tutorial Laravel 13 #3: Membuat Model dan Migration

like emoticon 1
love emoticon 0
insightful emoticon 0
fire emoticon 0
cheer emoticon 0
celebrate emoticon 0
Tutorial Laravel 13 #3: Membuat Model dan Migration

Halo teman-teman semuanya. Pada artikel sebelumnya kita telah belajar bagaimana cara melakukan installasi dan menjalankan project Laravel 13, maka sekarang kita akan belajar bagaimana cara membuat Model dan Migration di dalam project Laravel 13 yang sudah kita install pada tutorial sebelumnya.

Sebelum masuk ke praktik, ada baiknya kita memahami terlebih dahulu apa itu Model dan Migration di Laravel, karena dua komponen ini merupakan fondasi utama dalam pengelolaan data dan database.

Apa Itu Model?

Model di Laravel digunakan untuk merepresentasikan data dari sebuah tabel di database. Model berfungsi sebagai penghubung antara aplikasi Laravel dengan database menggunakan fitur Eloquent ORM. Dengan Model, kita dapat melakukan operasi CRUD (Create, Read, Update, Delete) dengan cara yang lebih mudah, rapi, dan terstruktur tanpa harus menulis query SQL secara manual.

Biasanya, satu Model akan merepresentasikan satu tabel di database.

Apa Itu Migration?

Migration adalah fitur Laravel yang digunakan untuk mengelola struktur database menggunakan kode PHP. Migration memungkinkan kita untuk membuat, mengubah, dan menghapus tabel database dengan cara yang terkontrol dan terstruktur, sehingga memudahkan proses pengembangan dan kolaborasi tim.

Migration juga sangat berguna ketika aplikasi dipindahkan ke environment lain, karena struktur database dapat dibuat ulang hanya dengan menjalankan perintah Artisan.

Langkah 1 – Konfigurasi Koneksi Database

Langkah pertama dalam membuat Model dan Migration di Laravel 13 adalah mengkonfigurasi koneksi database. Pengaturan ini dilakukan di dalam file .env.

Silakan teman-teman buka file .env, kemudian cari konfigurasi berikut ini.

DB_CONNECTION=sqlite
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=laravel
# DB_USERNAME=root
# DB_PASSWORD=

Silakan ubah menjadi seperti berikut ini.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_laravel_13
DB_USERNAME=root
DB_PASSWORD=

Penjelasan dari perubahan di atas:

  • Kita mengubah driver database dari sqlite menjadi mysql
  • Menghapus tanda # agar konfigurasi database aktif
  • Mengatur DB_DATABASE menjadi db_laravel_13
  • DB_USERNAME secara default menggunakan root
  • DB_PASSWORD dikosongkan jika menggunakan XAMPP

Setelah melakukan perubahan tersebut, simpan file .env, lalu jalankan perintah berikut ini untuk memastikan konfigurasi baru diterapkan:

php artisan config:clear

Langkah 2 – Membuat Model dan Migration Product

Setelah konfigurasi database selesai, langkah selanjutnya adalah membuat Model dan Migration untuk tabel products.

Silakan jalankan perintah berikut di dalam terminal/CMD:

php artisan make:model Product -m

Perintah di atas akan menghasilkan:

  • app/Models/Product.php → file Model
  • database/migrations/xxxx_xx_xx_create_products_table.php → file Migration

Langkah 3 – Mengatur Struktur Tabel Products

Selanjutnya, silahkan teman-teman buka file migration yang berada di folder database/migrations/xxxx_xx_xx_create_products_table.php, lalu ubah method up() menjadi seperti berikut ini.

database/migrations/xxxx_xx_xx_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 kode migration di atas, kita membuat tabel products yang memiliki beberapa kolom penting. Penjelasannya dapat dilihat pada tabel berikut ini:

Kode Tipe Data Fungsi
$table->id(); BIGINT UNSIGNED Membuat kolom id sebagai primary key dan auto increment
$table->string('image'); VARCHAR(255) Menyimpan nama file atau path gambar produk
$table->string('title'); VARCHAR(255) Menyimpan judul atau nama produk
$table->text('description'); TEXT Menyimpan deskripsi lengkap produk
$table->bigInteger('price'); BIGINT Menyimpan harga produk dalam bentuk angka
$table->integer('stock')->default(0); INT Menyimpan jumlah stok produk dengan nilai default 0
$table->timestamps(); TIMESTAMP Membuat kolom created_at dan updated_at secara otomatis

Langkah 4 – Menambahkan Mass Assignment

Setelah kita berhasil membuat tabel products menggunakan migration, langkah selanjutnya adalah menyiapkan Model Product agar bisa menerima data secara mass assignment.

Mass assignment di Laravel digunakan untuk mengisi banyak kolom sekaligus dalam satu perintah, misalnya saat menyimpan data dari form. Agar hal ini aman, Laravel mengharuskan kita mendefinisikan field apa saja yang boleh diisi melalui properti $fillable pada Model.

Silakan teman-teman buka file Model Product yang berada di lokasi berikut:

app/Models/Product.php

Kemudian ubah kodenya 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',
    ];
}

Penjelasan dari kode di atas:

  • Properti $fillable digunakan untuk menentukan kolom mana saja yang boleh diisi secara massal
  • Kolom id, created_at, dan updated_at tidak perlu dimasukkan karena diisi otomatis oleh Laravel
  • Dengan pengaturan ini, kita bisa menyimpan data menggunakan Eloquent dengan cara yang lebih ringkas dan aman

Langkah 5 – Menjalankan Migration

Setelah kita selesai membuat struktur tabel products dan menambahkan mass assignment pada Model Product, sekarang saatnya menjalankan migration agar tabel tersebut benar-benar dibuat di database.

Silakan jalankan perintah berikut ini di dalam terminal/CMD:

php artisan migrate

Jika keluar output seperti berikut ini. Itu artinya kita belum memiliki database di dalam MySQL dengan nama db_laravel_13 dan apakah kita ingin membuatnya ? Silahkan pilih Yes dan ENTER.

WARN  The database 'db_laravel_13' does not exist on the 'mysql' connection.  

┌ Would you like to create it? ────────────────────────────────┐
│ ● Yes / ○ No                                                 │
└──────────────────────────────────────────────────────────────┘

Jika prosesnya berhasil, maka Laravel akan membuat tabel products di dalam database db_laravel_13 sesuai struktur yang sudah kita tuliskan pada file migration.

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

Kesimpulan

Pada tutorial ini, kita telah belajar konsep dan praktik Model dan Migration di Laravel 13. Mulai dari mengkonfigurasi koneksi database di file .env, membuat Model dan Migration Product, mengatur struktur tabel products, menambahkan mass assignment melalui $fillable, hingga menjalankan perintah php artisan migrate untuk membuat tabelnya di database.

Pada tutorial berikutnya, kita akan mulai belajar bagaimana cara menampilkan data dari database menggunakan Laravel 13.

Terima kasih

Artikel ini dibaca sebanyak 6.299 kali

Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CEO & 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 komentar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami

Memuat komentar...