LoginSignup
1
0

More than 1 year has passed since last update.

【備忘録・Laravel】マイグレーションについて

Posted at

初めに

こんばんは、だいごです。
今回は、最近学習を始めたLaravelのマイグレーションについてまとめていこうと思います。
たまに、Railsとの比較を交えながらまとめていきます。
よかったらご覧ください。

マイグレーションの生成

まずは、マイグレーションの生成を行います。
生成に関するコードは以下になります。

# Laravel
% php artisan make:migration create_テーブル名(複数形)_table

# Ruby on Rails
% rails g model モデル名(単数系)

このコマンドのポイントとしては、テーブル名が複数形になるところです。
Railsではテーブル名は単数系なので、注意が必要です。

マイグレーションの構造

ここでは、生成されたマイグレーションを見ていきます。

<?php

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

return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('テーブル名', function (Blueprint $table) {
            $table->id();
            $table->データの型('カラム名');  /* カラムの追加 */
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('テーブル名');
    }
};

ここでのポイントは、updownのメソッドです。
upメソッドは、データベースに新しいテーブル、カラム、またはインデックスを追加するために使用し、
downメソッドは、upメソッドの逆の操作を行い、テーブルやカラムの削除やupメソッドが行なった操作を戻すために使用します。

また、$table->データの型('カラム名')をupメソッド内に記載することでカラムの追加をすることができます。

マイグレーションの実行

ここからは、生成したマイグレーションを実行していきます。
以下のコマンドを実行します。

# Laravel
% php artisan migrate

# Ruby on Rails
% rails db:migrate

このマイグレーションが実行されているか確認する場合には、以下のコマンドを実行します。

# Laravel
% php artisan migrate:status

# Ruby on Rails
% rails db:migrate:status

この2つのコマンドはLaravelもRailsもかなり似ているように感じます。

マイグレーションのロールバック

最新のマイグレーションを1つロールバックしたい場合には、以下のコマンドを実行します。

# Laravel
% php artisan migrate:rollback

# Ruby on Rails
% rails db:rollback

また、上記のコマンドでは最新の1つのマイグレーションしかロールバックできないため、stepオプションを与えることで、複数のマイグレーションをロールバックすることができます。

# Laravel
% php artisan migrate:rollback --step=数値

上記のように記載した場合には、最新のマイグレーションを数値の分だけロールバックできます。
さらに、全てのマイグレーションをロールバックしたい場合には、以下のコマンドを実行します。

# Laravel
% php artisan migrate:reset

他にも、マイグレーションのロールバックと実行を1つのコマンドで実行できるものがありますが、今回は省略します。
最後に、参考を載せるのでそちらをご覧ください。

テーブル/カラムの存在確認

ここでは、hasTableおよびhasColumnメソッドを使用して、テーブルまたは列の存在を確認していきます。

# laravel
if (Schema::hasTable('テーブル名')) {
    // "users"テーブルは存在していた
}
# laravel
if (Schema::hasColumn('テーブル名', 'カラム名')) {
    // "カラム名"カラムを持つ"テーブル名"テーブルが存在していた
}

この記述を用いた条件分岐で、同名のテーブルがない場合にテーブルを作成するなどの、コードを作成できます。

終わりに

今回は自身のLaravel学習の進捗分だけマイグレーションについてまとめました。
ここに記載していないことでも重要なことはたくさんあるので、学び次第追記していこうと思います。
ご指摘・コメント等お待ちしています。
ありがとうございました。

参考

1
0
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
1
0