Home Mobile Panduan Migrasi Database di Laravel

Panduan Migrasi Database di Laravel

0

Pendahuluan

Migrasi database adalah salah satu fitur penting di Laravel yang memungkinkan Anda mengelola skema database dengan mudah. Dengan menggunakan migrasi, Anda dapat membuat, mengubah, dan menghapus tabel tanpa harus menulis SQL secara manual. Artikel ini akan membahas cara membuat dan mengelola migrasi database di Laravel, termasuk penggunaan Seeder dan Factory untuk pengujian data.

Persiapan

Sebelum memulai, pastikan Anda sudah memiliki lingkungan Laravel yang sudah terpasang. Anda juga perlu mengatur koneksi database di file .env.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=user
DB_PASSWORD=password

Membuat Migrasi

Untuk membuat migrasi, Anda dapat menggunakan perintah artisan berikut:

php artisan make:migration create_nama_tabel_table

Perintah ini akan membuat file migrasi baru di direktori database/migrations. File migrasi tersebut berisi dua metode utama: up dan down. Metode up digunakan untuk mendefinisikan perubahan yang akan dilakukan pada database, sedangkan metode down digunakan untuk membatalkan perubahan tersebut.

Contoh Migrasi

Berikut adalah contoh migrasi untuk membuat tabel posts:

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

class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('content');
            $table->timestamps();
        });
    }

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

Menjalankan Migrasi

Untuk menjalankan semua migrasi, gunakan perintah:

php artisan migrate

Perintah ini akan mengeksekusi semua file migrasi yang ada di direktori database/migrations dan menerapkan perubahan pada database.

Mengubah Tabel yang Sudah Ada

Jika Anda ingin mengubah tabel yang sudah ada, Anda bisa membuat migrasi baru menggunakan perintah:

php artisan make:migration add_nama_kolom_to_posts_table --table=posts

Contoh migrasi untuk menambahkan kolom author ke tabel posts:

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

class AddAuthorToPostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('posts', function (Blueprint $table) {
            $table->string('author')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('posts', function (Blueprint $table) {
            $table->dropColumn('author');
        });
    }
}

Menggunakan Seeder

Seeder digunakan untuk mengisi tabel dengan data awal. Anda bisa membuat seeder menggunakan perintah:

php artisan make:seeder PostsTableSeeder

Contoh seeder untuk tabel posts:

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class PostsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('posts')->insert([
            'title' => 'First Post',
            'content' => 'This is the content of the first post.',
            'author' => 'Author Name',
            'created_at' => now(),
            'updated_at' => now(),
        ]);
    }
}

Untuk menjalankan seeder, gunakan perintah:

php artisan db:seed --class=PostsTableSeeder

Menggunakan Factory

Factory digunakan untuk membuat data palsu untuk pengujian. Anda bisa membuat factory menggunakan perintah:

php artisan make:factory PostFactory

Contoh factory untuk model Post:

use Faker\Generator as Faker;

$factory->define(App\Post::class, function (Faker $faker) {
    return [
        'title' => $faker->sentence,
        'content' => $faker->paragraph,
        'author' => $faker->name,
        'created_at' => now(),
        'updated_at' => now(),
    ];
});

Untuk membuat data palsu menggunakan factory, Anda bisa menggunakan tinker atau menambahkannya di seeder:

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        factory(App\Post::class, 50)->create();
    }
}

Kesimpulan

Migrasi database adalah fitur yang sangat berguna di Laravel untuk mengelola skema database dengan mudah. Dengan migrasi, seeder, dan factory, Anda dapat membuat, mengubah, dan mengisi tabel database dengan data awal dan data pengujian dengan cepat dan efisien. Menguasai fitur-fitur ini akan sangat membantu dalam pengembangan aplikasi Laravel Anda.