タグ: migration

  • 【Laravel】migrationでtableを削除する

    【Laravel】migrationでtableを削除する

    LaravelにはmigrationというDBを管理できる、DBのバージョン管理のようなサポート(≒機能)があります。

    これはLaravelのSchemaファサードに属しており、(Laravelが対応する)全てのDBシステムに対してtableを作成・操作するため、特定のDBに依存しないサポートを提供します。

    migrationは通常このFacadeを使用して、DBのtableとcolumnを作成・変更します。

    この機能を使えば、全てのエンジニアが同じDBを揃えることが可能になり、わざわざ手動でDBを変更する作業を行わなくてもよくなります。

    tableを削除する方法

    Laravelのmigrationでは、既存のtableを削除するときにはdropまたはdropIfExistsメソッドを使います。

    migrationを生成するときは以下の様にmake:migrationArtisanコマンドを使用してmigrationファイルを生成します。

    php artisan make:migration create_flights_table

    先ほど挙げた通り、tableの削除はdropまたはdropIfExistsなので、恐らくファイル名は以下でok。

    php artisan make:migration drop_flights_table

    migrationの構造

    migrationファイルには2つのメソッドが必要です。upメソッドとdownメソッド。

    upメソッドはDBに新しいテーブル、カラム、またはインデックスを追加するために使用します。

    downメソッドはupメソッドで実行したのと逆の操作をする。以前の状態に戻せます。

    <?php
    
    use Illuminate\Database\Migrations\Migration;
    use Illuminate\Database\Schema\Blueprint;
    use Illuminate\Support\Facades\Schema;
    
    class CraeteFlightsTable extends Migration
    {
        /**
         * マイグレーションの実行
         *
         * @return void
         */
        public function up()
        {
            Schema::create('flights', function (Blueprint $table) {
                $table->id();
                $table->string('name');
                $table->string('flights');
                $table->timestamp();
            });
        }
    
        /** マイグレーションを戻す
         *
         * @return void()
         */
        public function down()
        {
            Schema::drop('flights');
        }
    }

    migrationの実行

    以下のコマンドを実行すると、未処理のmigrationファイルをすべて実行することができます。

    php artisan migrate

    どのmigrationファイルが実行されているかを確認するには以下のコマンドを実行で確認できます。

    php artisan migrate:status