記事の内容
概要
マイグレーションは、データベーステーブルの作成・変更・削除を行うスクリプトです。
ファイル作成
【実行内容】
php artisan make:migration create_テーブル名_table
【ファイル先】database/migrations/xxxx_xx_xx_xxxxxx_create_テーブル名_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('テーブル名', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('テーブル名');
}
};
定義
追加したいカラムがあれば情報を修正します。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('テーブル名', function (Blueprint $table) {
$table->id();
$table->string('追加カラム名');
$table->string('追加カラム名')->unique();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('テーブル名');
}
};
テーブル追加
以下の命令を実行するとDBにテーブルが作成される。
【実行内容】
php artisan migrate
一覧
カラム追加
作成されたファイルを編集しましょう。
マイグレーション(カラム追加)
記法
php artisan make:migration add_カラム名_to_テーブル名_table –table=テーブル名
【作成ファイル】
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
//
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
//
});
}
};
【修正】
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
$table->string('カラム名')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
$table->dropColumn('カラム名');
});
}
};
カラムリネーム
作成されたファイルを編集しましょう。
マイグレーション(カラムリネーム)
記法
php artisan make:migration rename_カラム名_in_テーブル名_table –table=テーブル名
【作成ファイル】
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
//
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
//
});
}
};
【修正】
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
$table->renameColumn('旧カラム名', '新カラム名');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
$table->renameColumn('新カラム名', '旧カラム名');
});
}
};
カラム削除
作成されたファイルを編集しましょう。
マイグレーション(カラム削除)
記法
php artisan make:migration drop_カラム名_from_テーブル名_table –table=テーブル名
【作成ファイル】
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
//
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
//
});
}
};
【修正】
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
$table->dropColumn('カラム名');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
$table->string('カラム名');
});
}
};
テーブル名変更
作成されたファイルを編集しましょう。
マイグレーション(テーブル名変更)
記法
php artisan make:migration rename_旧テーブル名_table_to_新テーブル名_table
【作成ファイル】
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('新テーブル名', function (Blueprint $table) {
//
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('新テーブル名', function (Blueprint $table) {
//
});
}
};
【修正】
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::rename('旧テーブル名', '新テーブル名');
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::rename('新テーブル名', '旧テーブル名');
}
};
テーブル削除
作成されたファイルを編集しましょう。
マイグレーション(テーブル削除)
記法
php artisan make:migration drop_テーブル名_table
【作成ファイル】
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
//
}
/**
* Reverse the migrations.
*/
public function down(): void
{
//
}
};
【修正】
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::dropIfExists('テーブル名');
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::create('テーブル名', function (Blueprint $table) {
// ========================================
// テーブルを元に戻すために必要な情報 (記述は一例)
$table->id();
$table->string('カラム名');
$table->string('カラム名')->unique();
$table->timestamps();
// ========================================
});
}
};
インデックス追加
作成されたファイルを編集しましょう。
マイグレーション(インデックス追加)
記法
php artisan make:migration add_indexes_to_テーブル名_table –table=テーブル名
【作成ファイル】
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
//
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
//
});
}
};
【修正】
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
// インデックスの追加
$table->index('カラム名');
// 一意インデックスの追加
$table->unique('カラム名');
// 複合インデックスの追加
$table->index(['カラム名', 'カラム名']);
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('テーブル名', function (Blueprint $table) {
// インデックスの削除
$table->dropIndex(['カラム名']);
// 一意インデックスの削除
$table->dropUnique(['カラム名']);
// 複合インデックスの削除
$table->dropIndex(['カラム名', 'カラム名']);
});
}
};