【Eloquent】Laravelでテーブル作成
趣旨
LaravelのプログラムからDBにテーブルを作成する流れを紹介します。あくまで流れがつかめれば良いので、細かいメソッドの説明などはあえて省いています。
バージョン
Laravel 8.x
Eloquentとは
EloquentはLaravelのORM(プログラムとDBのやり取りを担う機能)だ。モデルと呼ばれるものとDBテーブルが1対1で対応する形になっている。モデルは、テーブルからレコードを取得、作成、更新、削除することができる。
次にDBにテーブルを作成する流れを紹介していく。
モデルの作成
まずはモデルを作成していく。コマンドラインで以下の操作を行う。
php artisan make:migration Blog -m
※artisanはLaravelが用意してくれているコマンドラインインターフェースであり、Laravelプロジェクト内ではartisanで操作を行う。
上記のコードでは、Blogという名前のモデルを作成し、mオプションでマイグレーションファイルも同時に作成している。マイグレーションファイルとは、DBにテーブルを作成する際の設計図となるもので、このファイルを実行(マイグレート)することでDBにテーブルが作られる。
artisanコマンドで生成されたモデルは app/Modelsに生成される。マイグレーションファイルはdatabase/migrationsに生成される。マイグレーションファイルには以下のように記述されている。
Schema::create('blogs', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
blogsテーブルがcreateされている。なぜテーブル名を指定していないのに、テーブル名が決められているのかだろう?
これはEloquentがモデル名からテーブル名を推測したからだ。どうやらEloquentは空気を読んで、モデル名の複数形をスネークケースで記述したものをテーブル名としてくれるらしい。
もちろん、モデルクラスからテーブル名を指定することも可能だ。
マイグレート実行
マイグレート実行時には、マイグレーションファイル内のup()が実行される。
モデル、マイグレーションファイルが作成できたのであとはマイグレートを実行するだけです。
php artisan migrate
以下のようにしゅつりくされれば成功です。
Migrating: 2022_06_05_045831_create_blogs_table
Migrated: 2022_06_05_045831_create_blogs_table (193.60ms)
参考文献
Laravel 8.x Eloquentの準備
Discussion