はじめに
今回は、Laravelのマイグレーション機能を利用し、既存テーブルにカラムを追加する過程で、調べたことをまとめました。
※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。
この記事の目的
以下内容についてアウトプット
- Artisan make:migrationコマンド
- マイグレーション機能
- カラムのデータ型
この記事の内容
- マイグレーションファイルの作成
- テーブルの定義
- マイグレーションを実行
- 参考 カラムのデータ型
- 参考 Artisan make:migrationコマンド
- 参考 その他処理
- 参考 関連記事
1. マイグレーションファイルの作成
Artisan make:migrationコマンドを使用して、マイグレーションファイルを作成します。
// 構文
php artisan make:migration 任意のマイグレーション名 --table=テーブル名
// 例 userテーブルにカラムを2つ追加
php artisan make:migration add_user_table_2columns --table=user
Tips :
-
マイグレーション名は任意
※クラス名と被るとエラーになる -
既存のテーブルに変更を加える場合、
--tableオプション
でテーブル名を指定する
2. テーブルの定義
先程作成したマイグレーションファイルに、テーブルの定義を行います。
<?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::table('追加先のテーブル名', function (Blueprint $table) {
$table->カラムのデータ型('新規カラム名')->comment('コメント')->after('既存カラム名'); // 構文
$table->timestamp('rest_password_expire_data')->nullable()->comment('パスワード再設定キーの有効期限'); // 例
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('user_m', function (Blueprint $table) {
$table->dropColumn('上記で追加したカラム'); // 構文
$table->dropColumn('rest_password_expire_data'); // 例
});
}
};
Tips :
-
マイグレーションファイルには、カラムの名前・データ型・制約などを定義する
-
up()
:追加したいカラムを定義する -
down()
:上記の処理を巻き戻す処理を記述 -
after()
:カラムの順番を整理する
※指定した既存カラムの後に、新規で作成するカラムが入る -
TIMESTAMP型のカラムを追加する場合、
nullable()メソッド
を使ってnull許容にする必要がある
※nullを許容しないとエラーいなる -
comment()
:DBのカラムに任意のコメントをつける
3. マイグレーションを実行
下記コマンドで、マイグレーションを実行します。
// 構文
php artisan migrate
4. 参考 カラムのデータ型
カラムのデータ型について、よく使うものをまとめました。
データ型 | 説明 | 備考 |
---|---|---|
char('カラム名', 長さ) | 長さ指定の文字型 | |
string('カラム名') | VARCHAR型 | デフォルト255文字 |
string('カラム名', 長さ) | 長さ指定のVARCHAR型 | |
text('カラム名') | TEXT型 | 最大長 65535文字 |
TINYINT('カラム名') | 数値型 | 1バイト(範囲 -128〜127) |
SMALLINT('カラム名') | 数値型 | 2バイト(範囲 -32768〜32767) |
MEDIUMINT('カラム名') | 数値型 | 3バイト(範囲 -8388608〜8388607) |
integer('カラム名') | 数値型 | 4バイト(範囲 -2147483647〜2147483647) |
BIGINT('カラム名') | 数値型 | 8バイト(範囲 -9223372036854775808〜9223372036854775807) |
double('カラム名', 合計桁数, 小数桁数) | 浮動小数点型 | |
enum('カラム名', ['定数', '定数']) | ENUM型 | |
date('カラム名') | 日付型 | |
time('カラム名') | 時間型 | |
dateTime(カラム名) | 日時型 | |
timestamp('カラム名') | TIMESTAMP型 | not null制約が適用 |
timestamps() | created_atとupdate_atカラム | |
nullableTimestamps() | NULL値を許す以外、timestamps()と同じ | |
boolean('カラム名') | 真偽値 | フラグ関係のカラム |
increments('id') | 「符号なしINT」を使用した自動増分ID(主キー) | |
json('カラム名') | JSON型 | |
binary('カラム名') | バイナリデータ型 |
5. 参考 Artisan make:migrationコマンド
-
php artisan migrate
未処理のマイグレーションをすべて実行する -
php artisan migrate:status
どのマイグレーションが実行されているかを確認する -
php artisan migrate:rollback
マイグレーション操作をロールバックする -
php artisan migrate:rollback --step=ステップ数
直近からステップ数分、マイグレーション操作をロールバックする
6. 参考 その他処理
既存のマイグレーションファイルを編集したい場合
例)カラム名の修正や、制約の追加など
① 該当のマイグレーションファイルをロールバックする
念のため、正しくロールバックできているかステータスを確認する
// どちらかのコマンドを実行する
php artisan migrate:rollback
php artisan migrate:rollback --step=ステップ数
// ステータス確認
php artisan migrate:status
② マイグレーションファイルを編集する
③ マイグレートを行う
php artisan migrate
既存のカラム名を修正したい場合
例)userテーブルの name
カラムを student_name
に変更したい
① 以下コマンドを実行し、マイグレーションファイルを作成する
// 構文
php artisan make:migration 任意のマイグレーション名
// 例
php artisan make:migration rename_column_user_table
② マイグレーションファイルを編集する
// 省略
public function up()
{
Schema::table('修正先のテーブル名', function (Blueprint $table) {
$table->renameColumn('現在のカラム名', '修正後のカラム名');
$table->renameColumn('name', 'student_name');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('修正先のテーブル名', function (Blueprint $table) {
$table->renameColumn('修正後のカラム名', '現在のカラム名');
$table->renameColumn('student_name', 'name');
});
}
}
③ マイグレートを行う
php artisan migrate
7. 参考 関連記事