#2: Database Migration & Model - Laravel URL Shorterner

By Rizky Kurniawan - June 20, 2022 ~2 mins read
Artikel ini merupakan bagian dari seri Membuat URL Shorterner Dengan Laravel

Laravel sudah menyediakan fitur database migration untuk memudahkan kita merancang tabel. Untuk membuat tabel menggunakan migration, kita menuliskan kode yang memberitahu laravel field apa saja yang ada di dalam tabel yang ingin kita buat, termasuk menentukan relasi, primary key, default value, dan lain-lain.

Membuat File Migrasi Dan Model

Kita bisa membuat file migrasi dengan bantuan artisan command milik laravel. Caranya, kita tinggal menjalankan perintah php artisan make:migration nama_migrasi. Dengan perintah tersebut, laravel akan secara otomatis membuatkan kita file migrasi yang disimpan dalam folder database/migrations. Sedangkan untuk membuat model kita bisa menggunakan perintah php artisan make:model NamaModel. Sehingga file model akan disimpan dalam folder app/Models.

Namun, ada cara yang lebih cepat untuk membuat file Model sekaligus membuat migrasinya. Kita bisa menggunakan perintah berikut:

php artisan make:model NamaModel -m

argumen -m memberitahu laravel untuk membuatkan migrasi untuk model yang dibuat secara otomatis. Sehingga, perintah tersebut akan menghasilkan dua buah file sekaligus yaitu file model dan migrasi database.

Sip, langsung saja kita akan membuat tabel bernama urls sekaligus membuat modelnya dengan perintah berikut ini:

php artisan make:model Url -m

Migrasi

Sesuaikan method up pada file migrasi yang sudah dibuat menjadi seperti berikut:

public function up()
{
    Schema::create('urls', function (Blueprint $table) {
        $table->id();
        $table->string('alias')->unique();
        $table->text('url');
        $table->timestamps();
    });
}
  • Field alias akan berisi random string yang nantinya menjadi short url
  • Field url akan berisi url original yang diperpendek

Model

Sesuaikan model yang baru saja dibuat menjadi seperi berikut:

<?php

namespace App\Models;

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

class Url extends Model
{
    use HasFactory;

    protected $fillable = [
        'alias',
        'url'
    ];
}

Atribut $fillable diperlukan agar kita bisa melakukan mass assignment pada field yang ada dalam array.

Proses Migrasi

Setelah membuat model dan file migrasi, saatnya kita melakukan migrasi. Pastikan mysql server kamu sudah running ya. Sebelumnya kita edit terlebih dahulu konfigurasi database pada file .env menjadi seperti berikut:

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

Sesuaikan nama database dan password dengan milik kamu ya

Setelah itu lakukan migrasi dengan perintah berikut:

php artisan migrate

Berikut ini hasil migrasi untuk tabel urls

mysql> desc laravel_url_shorterner.urls;
+------------+---------------------+------+-----+---------+----------------+
| Field      | Type                | Null | Key | Default | Extra          |
+------------+---------------------+------+-----+---------+----------------+
| id         | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| alias      | varchar(255)        | NO   | UNI | NULL    |                |
| url        | text                | NO   |     | NULL    |                |
| created_at | timestamp           | YES  |     | NULL    |                |
| updated_at | timestamp           | YES  |     | NULL    |                |
+------------+---------------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

Sip sekarang kita sudah punya tabelnya.

Bagikan:

Ingin Berdiskusi?

Yuk bergabung di Grup Telegram Ruang Developer atau mulai diskusi melalui GitHub. See You!

Dapatkan contoh source code project backend, frontend, atau fullstack untuk kamu amati, tiru, dan modifikasi sesuka hati. Klik untuk melihat detail!
comments powered by Disqus

Berlangganan Gratis

Kamu akan menerima email update dari Ruang Developer

Beri Dukungan

Beri dukungan, dapatkan full source code project web untuk bahan referensi, tiru, dan modifikasi.
Lightbox