🛠️

【Eloquent】Laravelでテーブル作成

2022/06/05に公開

趣旨

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の準備
https://readouble.com/laravel/8.x/ja/eloquent.html

Discussion