👌

マイグレーションの作成・実行

2023/04/02に公開

Laravel勉強記録

実行環境


OS:Mac
PHP:8.0
Laravel:8

マイグレーションとは


テーブルの定義をマネジメントするためのもの
テーブルの作成・更新などをマイグレーションコマンドを用いて操作を行う

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


マイグレーションファイルを作成

php artisan make:migration create_hoges_table --create=hoges

–create オプションでテーブル名
作成に成功するとこのようなログが出力される

Created Migration: 2020_06_24_055626_create_hoges_table

database/migrations/配下にファイルが作成される

ファイルの初期状態はこのような内容です

class CreateHogesTable extends Migration
{
    /** 
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {   
        Schema::create('hoges', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }   

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

※upメソッド:マイグレーション時の動作を記載
downメソッド:ロールバック時の動作を記載

モデルとマイグレーションを一緒に作成


モデルとマイグレーションファイルを一緒に作成

php artisan make:model Hoge --migration

作成に成功すると以下ログが表示される
2020_09_01_092933_create_hoges_table.php

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


  1. マイグレーションの実行
php artisan migrate
  1. マイグレーションを戻す
php artisan migrate:rollback
  1. マイグレーションを全て戻す
php artisan migrate:reset
  1. マイグレーションを当て直す
php artisan migrate:refresh
  1. マイグレーション状態の確認
php artisan migrate:status

カラムを追加


  1. マイグレーションの作成
php artisan make:migration add_type_to_hoges_table --table=hoges
  1. マイグレーションファイル編集
class AddTypeToHogesTable extends Migration
{
    /** 
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {   
        Schema::table('hoges', function (Blueprint $table) {
          $table->integer('type');
        }); 
    }   

    /** 
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {   
        Schema::table('hoges', function (Blueprint $table) {
          $table->dropColumn('type');
        }); 
    }   
}
  1. マイグレーションの実行
php artisan migrate

カラムの属性変更


  1. composerでライブラリ追加
composer require doctrine/dbal
  1. マイグレーション作成
php artisan make:migration change_type_to_hoges_table --table=hoges
  1. マイグレーションファイル修正
class ChangeTypeToHogesTable extends Migration
{
    /** 
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {   
        Schema::table('hoges', function (Blueprint $table) {
          $table->string('type')->change();
        }); 
    }   

    /** 
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {   
        Schema::table('hoges', function (Blueprint $table) {
          $table->integer('type')->change();
        }); 
    }   
}
  1. マイグレーション実行
php artisan migrate

ひとつ前にロールバック


php artisan migrate:rollback --step 1

Discussion