KoudouBlogs

元警察官 / 現ITエンジニア 宅トレ発信

『Laravel』マイグレーションの基本

マイグレーション

マイグレーションとは』
『引用元』データベース:マイグレーション 5.6 Laravel

  • データベースのバージョンコントロールのような機能。
  • DBスキーマの更新をチームで簡単に共有できる。
  • Laravelのスキーマビルダとペアで使い、DBスキーマの作成を楽にする
  • もしあなたが今まで、チームメイトに彼らのローカルデータベーススキーマ手作業でカラムを追加するよう依頼したことがあるなら、そうした問題を解決してくれます。

マイグレーションファイル

マイグレーションファイルを作成する。
$ php artisan make:migration create_【テーブル名】_table
マイグレーションファイルを編集する。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateSamplesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
 public function up()
    {
        Schema::create('samples', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();  #created_at updated_at
            $table->softDeletes();   #deleted_at (論理削除)
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('samples');
    }
}
素のSQLを記載する。
<?php
public function up()
    {
        Schema::table("samples", function (Blueprint $table) {
            $sql = '
            CREATE TABLE IF NOT EXISTS `samples` (
            `id` bigint(10) unsigned NOT NULL auto_increment ,
            `address` varchar(255) NOT NULL, 
            `phone_number` int(20) NOT NULL,
            `url` varchar(100) NOT NULL DEFAULT "",
            `memo` varchar(255) NOT NULL DEFAULT "" ,
            `created_at` timestamp NULL DEFAULT NULL ,
            `updated_at` timestamp NULL DEFAULT NULL ,
            PRIMARY KEY (`id`)
            )AUTO_INCREMENT=1; 
            ';
            DB::connection()->getPdo()->exec($sql);
            });
    }
マイグレーションファイルを実行する。
$ php artisan migrate

マイグレーションロールバックする。

巻き戻す数を限定する
$ php artisan migrate:rollback --step=1
全部のマイグレーションを最初にロールバックし、それからmigrateコマンドを実行する。
$ php artisan migrate:refresh --seed
全部のマイグレーションロールバック
$ php artisan migrate:reset