WEB開発

【今さら聞けない!】Laravel マイグレーション入門

マイグレーション生成

テーブルの作成

php artisan make:migration create_hoge_table

マイグレーションはdatabase/migrationsフォルダに設置されます。マイグレーションの実行順をフレームワークに知らせるため、名前にタイムスタンプが含まれています。

https://readouble.com/laravel/5.8/ja/migrations.html

あるテーブルにカラムを追加する

あるテーブルにカラムを追加する場合は以下のように記載します。

[column_name] は追加するカラム名にしておきましょう。

[table_name]は追加するテーブル名にしておきましょう。

php artisan make:migration add_[column_name]_to_[table_name]_table --table=[table_name]

マイグレーションの実行

php artisan migrate

全テーブルを削除しマイグレーション実行

php artisan migrate:fresh

テーブル作成時のカラム設定

コマンド説明
$table->bigIncrements('id'); 符号なしBIGINTを使用した自動増分ID(主キー)
$table->bigInteger('votes'); BIGINT
$table->char('name', 100); オプションの文字長を指定するCHARカラム
$table->date('created_at'); DATEカラム
$table->text('description'); TEXTカラム
$table->time('sunrise'); TIMEカラム
$table->timestamp('added_on'); TIMESTAMPカラム
$table->timestamps(); NULL値可能なcreated_atとupdated_atカラム追加
$table->uuid('id'); UUIDカラム

カラムの修飾子を設定

メソッド説明
->comment('my comment') カラムにコメント追加(MySQL/PostgreSQLのみ)
->default($value) カラムのデフォルト(default)値設定
->nullable($value = true) (デフォルトで)NULL値をカラムに挿入する
->nullable() NULL許容
->useCurrent() TIMESTAMPカラムのデフォルト値をCURRENT_TIMESTAMPに指定

カラム名の変更

Schema::table('users', function (Blueprint $table) {
    $table->renameColumn('from', 'to');
});

インデックスの設定

コマンド説明
$table->primary('question_id');主キーを設定する
$table->primary(['id', 'parent_id']); 主キーを複数設定する
$table->unique('email'); uniqueキー追加
$table->index('state'); 基本的なインデックス追加

-WEB開発
-, ,