LoginSignup
0
0

More than 3 years have passed since last update.

Laravelマイグレーションの基本まとめ(6以降対応)

Posted at

はじめに

Laravelのマイグレーションはデータベースをコントロールする機能です。
僕だけかもしれませんが、開発していく中でマイグレーションファイルははたまに触るくらいなので毎回ググっていたという経緯から備忘録としてマイグレーションの主な機能についてリスト化していきます。

マイグレーション生成

まずは超基本的なマイグレーションファイルを作成するコマンド

$ php artisan make:migration create_[テーブル名]_table
$ php artisan make:migration create_users_table

このコマンドを実行するとusersテーブルが作成されます。

マイグレーションファイルのオプション

マイグレーションファイルを作成する際に--tableと--createのオプションを指定できます。

例えば、以下のコマンドではオプションがない場合テーブル名が何かわからないので、
--table=usersをつけることで、usersテーブルの雛形を作成してくれます。

$ php artisan make:migration add_votes_to_users_table --table=users

マイグレーション構造

マイグレーションを実行したら、以下のようなファイルが作成されます。
ここではカラムの追加やカラム型・物理名・論理名などを指定できます。

マイグレーションはupとdownのメソッドがあります。

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

downメソッドはupメソッドが行った操作を元に戻します。ロールバックの機能ですね。

2014_10_12_000000_create_users_table.php
<?php

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

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

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

マイグレーション実行

マイグレーション構成を確認できたらマイグレーションを実行します。

$ php artisan migrate

実働環境でのマイグレーション強制

マイグレーションを強制実行するコマンドがあります。

$ php artisan migrate --force

これ使ったことないです。
データ全部飛んじゃうので使うなって新人の頃に強く言われましたね。

例え、使うことがあってもリーダーに確認してからにしましょう。

ロールバック

マイグレーションをロールバックするコマンドもあります。
ロールバックとは巻き戻すという意味で最後に実行したマイグレーション実行を巻き戻してくれます。

$ php artisan migrate:rollback

マイグレーション変更・追加

生成したマイグレーションにカラムを追加したい場合、新たにマイグレーションを生成する必要があります。

例えば、usersテーブルにageカラムを追加したい場合、以下のように書きます。

    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->integer('age');  //カラム追加
        });
    }


    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('age');  //カラムの削除
        });
    }

以上になります!

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