初心者のためのLaravel超入門講座5回目はモデルの作成と設定について。
モデルは、データベース上の各テーブル間の連携を設定する非常に重要な部分。
前回のマイグレーションとセットで使いこなしていきましょう。
なお前回までの内容はこちらをご覧ください。
Laravelのモデルとは
まず最初に、モデルについて解説します。
講座の第1回目で、LaravelはMVCモデルを採用していると書きました。
モデルは③の部分に該当し、データベースとの連携を担当し、得られた結果をコントローラーに返します。
「MVCモデルってなんだっけ?」と思ったら、こちらの記事をご覧ください。
なぜモデルが必要なのか?
ただそもそも論として、なぜモデルが必要なのか?
Laravelの仕組みやプログラミングを理解するうえで大事なので、少しくわしく解説しますね。
モデルがなければ、データベースを直接処理しなければいけません。
これは非常に効率が悪い上、データベースと連携がうまくできなければ、トラブルが発生します。
そのため、プログラムとデータベースを対応づけて開発を進めるORMという手法ができました。
ORMとは、Object Relatonal Mappingの略で、日本語にするとオブジェクト関係マッピングです。
このORMを実施するツールや機能のことをORマッパーといいます。
モデルは、このORマッパーを使って、データベースと連携している部分になります。
なおORマッパーには色々なものがありますが、LaravelはEloquent(エロクエント)というORマッパーを使っています。
Eloquentは学びやすいこと、分かりやすいこと、学習のしやすさに定評があります。
英語の豆知識
Eloquentは【雄弁な】【弁がたつ】という意味があります。
データベースと上手にコミュニケーションをはかってくれる、ということで、こんな名前なのですね。
モデルとマイグレーションの違い
なお前回解説したマイグレーションとの違いが分かりにくいかもしれないので、役割をはっきりさせておきます。
モデルファイルは、データベース上の各テーブルの関係について設定します。
一方マイグレーションファイルは、データベース上の各テーブルの作成・更新の設計図。マイグレートを行うと、実際にテーブルを作成・更新します。
モデル | 各テーブル間の関係を設定する。 |
---|---|
マイグレーション | テーブルの作成や更新を設計する。 |
モデルを作成してみる
モデルについて解説をしましたが、ここからは実際にモデルを作ってみましょう。
作成したモデルを使ってデータベースから情報を取得し、ブラウザに表示するまでを実践してみます。
①モデルファイル作成のコマンドを入力する
Laravelをインストールしたフォルダに移動し、次のようにコマンドラインに入力します。
1 |
php artisan make:model Post -m |
最後に【-m】とつけましたが、こうすると、モデルファイルとマイグレーションファイルを同時に作れます。
モデルファイルを作れば、マイグレーションファイルも必要ににあるので、通常は、このようにマイグレーションファイルを一緒に作ります。
なおモデル名は、次の2つのルールを覚えておきましょう。
- 単数形にする
- 最初は大文字にする
②モデルファイルとマイグレーションファイルを確認する編集する
出来上がったモデルファイルは、app/Modelsの中にできます。
マイグレーションファイルは、database/migrationsの中に出来上がります。
③マイグレーションファイルを使ってPostテーブルを作る
マイグレーションファイルを編集します。
まずはテーブルにいれる列(カラム)を入力していきましょう。
18行目あたりに、下記の2行を加えてください。
1 2 |
$table->string('title'); $table->text('body'); |
編集後のマイグレーションファイルはこちら。
マイグレーションファイルを保存後、php artisan migrateを実行します。これによって、データベースにpostsテーブルが反映されます。
1 |
php artisan migrate |
*なお、データベースは既に作成済みとして、説明を続けていきます。もしまだデータベースがない場合は、下記記事内の【データベースと接続】を参考に、データベースを作成・接続させた後に、マイグレートを実行しましょう。
④MySQLにデータを挿入する
phpMyAdminにログインし、postsテーブルができていることを確認してください。
テーブルを確認できたら、「挿入」ボタンを押します。
下記のように項目を追加しておきます。
⑤ルートファイルとモデルファイルを連携させる
次に、ルートファイルに、モデルファイルと連携させるコードを書いておきましょう。
ルートファイルは、routesフォルダの下のweb.phpファイルになります。
ルートファイルの先頭に、次の1行を加えてください。
1 |
use App\Models\Post; |
これで Postモデルについて、ルートファイル内に記述できるようになりました。
⑥ルートファイルに命令を書く
では試しに、ルートファイルに次のようにコードを書いてみます。
1 2 3 4 5 6 |
Route::get('/test', function(){ $posts = Post::all(); foreach($posts as $post){ return $post->title; } }); |
コードの意味は次のとおりです。
- /testというページに関する命令です。
- データベース内のpostsテーブルのデータをすべて取得して。
- そのなかでtitleというカラムの中身を表示して。
保存し、ララベルのサーバーを立ち上げてください。
URLの最後に【/test】を加えてページを表示を確認してみましょう。
無事、Postテーブルの中のtitleカラムの中身が表示されていれば、成功です。
なお本来はルート設定→コントローラーの流れで、ブラウザに画面を表示させますが、モデルの説明用に、処理を簡略化しました。
まとめ
今回のまとめ
- Laravelのモデルはデータベースとの連携を行う役割がある
- LaravelのモデルはEloquent ORMを採用し、学びやすい仕組みになっている
- 前回学んだマイグレーションファイルはテーブルの中身を設計する役割がある
- モデルをつくるときはマイグレーションファイルも一緒に作ることが多い。
- モデル名は単数形で最初は大文字にする
今回はモデルを実際に作ってみました。
ですが、モデルの機能はまだほとんど使い切れていません。
次回以降は、色々なテーブルを作り、モデルでテーブル間の関係を設定してみましょう。
モデルって、「こんなに複雑なテーブル連携も、簡単にできちゃうんだ!」と、きっとびっくりしてしまいますよ!
なお「実際にプロジェクトでモデルを使ってみたい」「実践的な内容でLaravelを学びたい」と思ったら、学習サイト【Laravelの教科書】を活用してくださいね。
詳細は、下記ボタンをクリックした先のご案内ページをご覧ください。
Laravelを学びつつ、フォーラムサイトを作成していく学習サイトです。
基礎編部分は無料です。