Laravel - 12. モデル - コントローラとモデル
これまでの学習のまとめとして、コントローラからモデルを呼び出すプログラムを作成します。

以前に作成した HelloController (app/Http/Controllers/HelloController.php) の index アクションを修正します。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Message;
class HelloController extends Controller
{
public function index()
{
$title = "Hello Model!";
$messages = Message::orderBy("id")->get();
return view("hello/index", compact("title", "messages"));
}
}
ここではクラス定義の前に use App\Message; を追加している点に注意してください。これによって HelloController において Message クラスを利用できるようになります。また index アクションの中では以下のように Message モデルにアクセスしています。
$messages = Message::orderBy("id")->get();
上記のプログラムでは messages テーブルの全レコードを id 列で昇順にソートして取得しています。ここで作成した $messages 変数を次のビューファイル( resources/views/hello/index.blade.php )で参照するようにします。
@extends('layout.app')
@section('content')
<h1>{{ $title }}</h1>
<ul>
@foreach ($messages as $message)
@if (mb_strlen($message->text) >= 5)
<li>{{ $message->text }}</li>
@endif
@endforeach
</ul>
@endsection
ここでは $messages 変数を @foreach ディレクティブで繰り返し処理をしています。また繰り返しの中では Message インスタンスの text プロパティが5文字以上かどうかを確認して出力しています。
動作確認
コントローラとビューを修正したので、PHPのビルトインWebサーバを使ってWebアプリケーションを起動してみましょう。次のようにコマンドを入力します。
$ php artisan serve --host 0.0.0.0
Laravel development server started: http://0.0.0.0:8000
続いてブラウザを起動してWebアプリケーションにアクセスしてみましょう。
http://localhost:8000/hello

実行結果から Message モデルによって取得した値をビューに表示できているのがわかります。
まとめ
- コントローラのアクションメソッドからモデルにアクセスできる
- モデルのメソッドを呼び出すことでデータベースを操作できる
- モデルの操作結果をビューで表示する