LaravelのModelを初心者向けに解説!作成方法や使い方、実践までを即理解

LaravelのModelを初心者向けに解説!作成方法や使い方、実践までを即理解

LaravelのModelについて、Laravel初心者向けに解説していきます。

本記事では、LaravelのModelとは何か、Modelの作成方法、Modelの使い方について説明します。

LaravelのModelの概念と実践までを簡単に理解できる内容になっています。

LaravelのModelとは?

Modelとは、MVCアーキテクチャの「M」にあたる部分で、主にデータベースとの連携を行います。

LaravelにおけるModelは、Eloquent(DBのデータを操作する実装)の機能とビジネスロジックを持ったクラスです。

基本的には1つのテーブルに1つのModelが存在します。
(中間テーブルなどModelを持つ必要がないケースもあります)

LaravelのModelを作成する前に、.envファイルの以下の部分を適宜設定しておきましょう。

データベースの設定は、config/database.phpに記述されていますので、そちらも中身を確認し、必要に応じて.envファイルに環境変数をセットしておきましょう。

Laravelを初めて使用するという方は「作って覚えるPHP Laravel 使い方やインストール方法も!」の記事をご確認ください。

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

Modelの作成方法

LaravelのModelはartisanコマンドで簡単に作成することができます。

php artisan make:model User

Modelの生成先を指定したい場合はModel名の前にパスを指定します。

php artisan make:model Models\User

ちなみにModelを削除したい場合は、オプションが用意されていないため、手動でファイルを削除する必要があります。

Modelの命名規則

LaravelのModelには命名規則があります。

例えば、テーブル名がusersの場合、Model名はUserになります。

テーブル名を単数形にしたものがModel名となり、自動的にテーブルを操作することができるようになります。

この命名規則は絶対的なものではなく、テーブル名を明示的に指定することもできます。

その場合は$tableをオーバーライドしましょう。

このようなカスタマイズ方法は、大抵はLaravelのドキュメントにて説明されていますが、中にはコアの実装を見ることで方法を知るケースもあるので、Laravelのコアのソースを時間がある時にでも読んで見ると良いでしょう。
(cf. [Laravel APi](https://laravel.com/api/5.4/index.html))

今回のケースはドキュメントで説明されているものですが、Laravel APIにてIlluminate\Database\Eloquent\Modelの実装を確認しておくと今後の開発のために良い勉強になるでしょう。

modelsディレクトリの扱いについて

LaravelにはModelsディレクトリがデフォルトでは用意されていませんが、これには理由があります。

それは、Laravelの開発者が、”models”という名前の定義が開発者によって大きく異なるということを考慮したからです。

開発者によってModelの扱いが異なるため、デフォルトでmodelsというディレクトリを用意せず、Laravelを使う開発者にその扱いを委ねるようにしました。

したがって、modelsディレクトリを用意したい場合は、appディレクトリ以下にmodesを手動で用意すると良いでしょう。

appディレクトリの外に用意したい場合はcomposer.jsonにオートロードの設定をする必要があります。

Modelを使う

それでは実際にModelを使ってみましょう。

データを用意して、モデルを作成し、コントローラーでモデルを呼び出して用意したデータを出力することができるか確認します。

まずは、migrationファイルを用意します。

php artisan make:migration create_user_tables

 

作成されたmigrationファイルを以下のように編集します。

 

 

続いて、初期データを用意するためシーダーを作成します。

php artisan make:seed UserTableSeeder

 

 

作成されたシーダーファイルを次のように編集します。

 

 

作成したシーダーを実行できるようapp/database/seeds/DatabaseSeeder.phpを編集します。

 

 

マイグレーションとシーダーの用意ができたので、マイグレーションとシーダーを実行してみましょう。

php artisan migrate
php artisan db:seed

マイグレーションとシーターを同時にした場合は、以下のようにmigrateコマンドにオプションを付けることで同時に実行することができます。

php aritsan migrate --seed

開発環境のMySQLにログインして、テーブルとデータがセットされたか確認してみましょう。
(MySQLへのログインコマンドは各自に環境に合わせて実行してください。ここでは割愛します。)

使いたいテーブルを指定します。
use demo;

テーブル構造を出力します。
DESC users;

 

+————+——————+——+—–+———+————-+
| Field | Type | Null | Key | Default | Extra |
+————+——————+——+—–+———+————-+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
+————+——————+——+—–+———+————-+
4 rows in set (0.00 sec)

データを確認します。
select * from users;

+—-+————–+———————+———————+
|  id  |  name   |    created_at   |    updated_at   |
+—-+————–+———————+———————+
|  1   | default_user | 2017-08-12 21:03:00 | 2017-08-12 21:03:00 |
+—-+————–+———————+———————+
1 row in set (0.00 sec)

 

テーブルとデータの確認ができたので、コントローラーでモデルを呼び出してみましょう。

コントローラーを作成します。

php artisan make:controller UserController

作成されたコントローラーにindexメソッドを以下のように追加します。

 

ルーティングの設定をルートファイルに記述したらブラウザで指定のルートにアクセスしてみましょう。

$user->nameの中身がデバッグされているでしょうか?

エラーが出力される場合は、エラーの内容を読んで適宜修正しましょう。

まとめ

いかがでしたでしょうか?

Laravelのモデルについて、その概念と使い方について駆け足で説明しました。

モデルの使い方としてリレーションの説明を省きましたが、複数のモデルを連携して使うために重要な概念なので、モデルの基本な理解ができた方はそちらの勉強に進まれることをオススメします。