MENU

【Laravel8】【DB】migration機能を使ったテーブル作成

Laravel8講座

Laravelにはテーブル作成が簡単にできるmigration機能というのがあります。
簡単にテーブル作成できますし、
従来のDBサーバーで直接コマンド実行してテーブルを作成するより、
PJ内にコードがあるので履歴等も管理でき非常に良い機能です。

今回はこのmigration機能を使ってテーブルを作成する方法を説明していきます。

目次

migration機能を使ったテーブル作成方法について

Laravelのテーブル作成方法の解説をしていきます
mysqlサーバー直接にコマンドを実行するのではなく、
Laravelのコマンドから作成していく方法です

テーブル定義

テーブル名 Members (基本的にテーブルは複数形がよい)
以下のスキーマーのテーブル作成をします。

※参考記事 LaravelアプリからのDBの接続について

FieldTypeNullKeyDefaultExtra
idbigint unsigned NOPRINULLauto_increment
usernamevarchar(255)NONULL
emailvarchar(255)NONULL
email_verified_attimestampYESNULL
created_attimestampYESNULL
updated_attimestampYESNULL
このページで使うテーブルの定義

テーブル作成

以下のコマンドを実行します。

php artisan make:model クラス名(テーブル名単数) --migration
例)php artisan make:model Member --migration  

※モデルのクラス名はテーブルの単数系 
例)テーブル名 members クラス名Memberで作ると、
Laravel内の補完機能が働いて楽に作れます。

上記コマンドを実行時に自動生成される以下のファイルの編集をします。
(Xの部分はコマンド打った時の日付等が挿入されます。)
編集database/migrations/XXXX_XX_XX_XXXXX_create_members_table.php
例)database/migrations/2021_10_01_055724_create_members_table.php

Before(編集前)

After(編集後)

解説


up()関数の中にスキーマー定義を書きます。

Beforeの画像ですでにup()関数にあるものは、
php artisan make:model Member –migration  のコマンドを打ったときに
自動生成されているものなので適宜修正してください。

スキーマー定義の書き方の一例です。

ページ上部のスキーマーを生成するときのコードです。

//プライマリーキー
$table->id();

//文字列のカラム Varchar(255)のカラムが作成される
$table->string(‘username’); usernameはカラム名


//timestampのカラム、カラムタイプ定義の後に->nullable() こんな感じでnull OKかどうか設定できる。デフォルトはNull NG。こんな感じでカラム修飾子も設定可能です。

$table->timestamp(‘email_verified_at’)->nullable()

その他の設定項目についてはこちらご確認ください。
https://readouble.com/laravel/master/ja/migrations#column-modifiers

//created_at(作成日時),updated_at(更新日時)のカラムが自動生成される
$table->timestamps();


テーブル名は複数形 例)members 
モデルはテーブルの単数系 例)Memberで作ると、
Laravel内の補完機能が働いて楽に作れます。

命名規則が合わない場合も定義を追加、変更することにより
既存のテーブル名、定義に合ったテーブルの作成ができます。

詳しくは公式ドキュメントのこのページを確認してください。
id,string,timestamp以外の定義方法もこのページに載っています。
https://readouble.com/laravel/8.x/ja/migrations.html#creating-tables


ファイルの編集が終わったら、

テーブル作成をコマンドでします。
このコマンドを実行しましょう。

 php artisan migrate

無事テーブル作成できたかどうかDBを覗いてみます。

テーブル作成できていました!!

以上、Laravelでのテーブル作成方法の説明でした。

おわりに

Laravelのmigration機能を使ったテーブルの作成方法を解説しました。
自力でMySQL等DBサーバーに入って作業するよりメンテナンス性が良いのでこちらの方法がおすすめです。
ぜひサンプルコードをもとに試してみてください。


次回はテーブルへのマスタデータ挿入方法について解説します。

では!!

よかったらシェアしてね!

この記事を書いた人

コメント

コメントする

目次
閉じる