LoginSignup
5
8

【Laravel】マイグレーションの基本

Posted at

Laravelのマイグレーションとは

データベースの作成や編集、削除などを管理する方法として、PHPフレームワークのLaravelには「マイグレーション」というものが備わっています。
正しくコードを書くと、だれが、いつ、どういった目的でテーブルの作成・編集・削除を行ったのかがわかる優れものです。
本記事では、基本的なマイグレーションのやり方について書きます。

詳しく知りたい方は、下記の公式ページもご参照ください。

マイグレーションの手順

  1. マイグレーションファイルの作成
  2. マイグレーションファイルの編集
  3. マイグレーションの実行

1. マイグレーションファイルの作成

$ php artisan make:migration create_{テーブル名}_table

コマンドプロンプト(ターミナル)で上記コマンドを実行します。
成功すれば、database/migrationsディレクトリ内にマイグレーションファイルが生成されます。

2. マイグレーションファイルの編集

下記のマイグレーションファイルは、例として{テーブル名}に「posts」を指定したときにできるものです。

2023_06_06_132828_create_posts_table.php
<?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(): void
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
        });
    }

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

「up」内にはテーブル作成時の処理、「down」内にはテーブル削除時の処理を書きます。
今回は例として、post(投稿)の文章text、画像保存先imageを追記します。

2023_06_06_132828_create_posts_table.php
<?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(): void
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('text');
            $table->string('image', 50);
            $table->timestamps();
        });
    }

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

テーブルカラム作成のデータ型については、下記の記事も参考にしてみてください。

3. マイグレーションの実行

$ php artisan migrate

初回マイグレーションではコマンドプロンプト(ターミナル)で上記コマンドを実行します。これでテーブルの生成完了です!

その他のマイグレーションコマンド

$ php artisan migrate:rollback

直前のマイグレーションをロールバックします。
(基本的に直前マイグレーションの取り消しのように振る舞いますが、実際にはマイグレーションファイルのdown()を実行しています。)

$ php artisan migrate:reset

マイグレーションをすべてロールバックします。

$ php artisan migrate:refresh

マイグレーションをすべてロールバックし、全マイグレーションを実行します。

$ php artisan migrate:fresh

データテーブルをすべて削除し、全マイグレーションを実行します。

$ php artisan migrate:status

各マイグレーションファイルの状態を表示します。

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8