Cara Membuat Laravel Migration
Migrasi basis data Laravel memungkinkan pengembang dengan cepat melakukan bootstrap, menghancurkan, dan membuat ulang basis data aplikasi, tanpa perlu masuk ke konsol basis data atau menjalankan kueri SQL apa pun.
Dalam panduan ini, Anda akan membuat migrasi database untuk menyiapkan tabel tempat Anda akan menyimpan tautan aplikasi. Untuk melakukan itu, Anda akan menggunakan alat baris perintah Artisan yang disertakan dengan Laravel secara default. Pada akhirnya, Anda akan dapat menghancurkan dan membuat ulang tabel database Anda sebanyak yang Anda inginkan, hanya dengan menggunakan perintah artisan
.
Untuk memulai, pertama-tama pastikan Anda berada di direktori root aplikasi dan lingkungan pengembangan Docker Compose Anda aktif dan berjalan:
cd ~/landing-laravel
docker-compose up -d
Output
landing-laravel_app_1 is up-to-date
landing-laravel_nginx_1 is up-to-date
landing-laravel_db_1 is up-to-date
Selanjutnya, buat migrasi database untuk menyiapkan tabel links
. Migrasi Laravel memungkinkan pengembang untuk membuat, memperbarui, dan menghancurkan tabel database secara terprogram, bekerja sebagai sistem kontrol versi untuk skema database Anda.
Untuk membuat migrasi baru, Anda dapat menjalankan perintah make:migration
Artisan dan itu akan mem-bootstrap kelas baru pada aplikasi Laravel Anda, di folder database/migrasi
. Kelas ini akan berisi kode boilerplate default.
Ingatlah untuk menggunakan docker-compose exec app
untuk menjalankan perintah pada wadah layanan app
, tempat PHP diinstal:
docker-compose exec app php artisan make:migration create_links_table
Created Migration: 2020_11_18_165241_create_links_table
Catatan: Nama migrasi dibuat berdasarkan tanggal dan waktu saat ini, dan nama yang diberikan sebagai argumen untuk perintah make:migration. Oleh karena itu, nama file migrasi Anda akan sedikit berbeda. Untuk nama file yang tepat, periksa dengan yang berikut ini:
find ~/landing-laravel/database/migrations -name '*create_links_table.php'
Output /home/sammy/landing-laravel/database/migrations/2020_11_18_165241_create_links_table.php
Buka kelas migrasi yang dihasilkan menggunakan editor pilihan Anda:
nano database/migrations/2020_11_18_165241_create_links_table.php
Selanjutnya, perbarui metode naik untuk menyertakan kolom tabel yang Anda perlukan untuk menyimpan data aplikasi.
Ganti konten kelas migrasi Anda saat ini dengan kode berikut. Nilai yang disorot adalah satu-satunya baris yang perlu ditambahkan, jadi jika Anda mau, Anda juga hanya dapat menyalin baris yang disorot tersebut dan memasukkannya ke dalam Schema::create definition:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateLinksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('links', function (Blueprint $table) {
$table->id();
$table->string('url', 200);
$table->text('description');
$table->boolean('enabled')->default(true);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('links');
}
}
Selain bidang default yang disertakan dalam definisi tabel yang dibuat secara otomatis dengan perintah Artisan, Anda menyertakan tiga bidang baru dalam tabel ini:
-
url
: Bidang string untuk menyimpan URL tautan. -
description
: Bidang teks untuk menyimpan deskripsi tautan. -
enable
: Bidang untuk menyimpan status tautan, apakah itu diaktifkan atau tidak. Jenis Skemaboolean
akan menghasilkan bidangtinyint
unsigned untuk menyimpan nilai 0 dari 1.
Simpan file migrasi Anda setelah selesai menambahkan bidang ini. Selanjutnya, jalankan migrasi dengan:
docker-compose exec app php artisan migrate
Output
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (152.46ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (131.12ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (101.06ms)
Migrating: 2020_11_18_165241_create_links_table
Migrated: 2020_11_18_165241_create_links_table (60.20ms)
Anda akan melihat bahwa migrasi lain juga dijalankan bersama dengan create_links_table. Itu karena instalasi Laravel default dilengkapi dengan migrasi untuk pengguna (dengan tabel users dan tabel password_resets) dan untuk pekerjaan yang antri (dengan tabel failed_jobs). Karena aplikasi demo Anda tidak akan menggunakan fitur ini, sekarang aman untuk menghapus migrasi tersebut; namun, Anda juga dapat memilih untuk tidak menggunakannya jika Anda sedang mengerjakan aplikasi Anda sendiri dan berencana untuk mengembangkannya lebih lanjut. Semua file migrasi berada di database/migrasi di folder root aplikasi.