コントローラーからモデルを利用する

モデルの利用方法をtinkerで確認してきました。

続いては実際にコントローラー上からモデルを利用してみましょう。

データの準備

コントローラーに処理を記述し始める前に、改めてmessagesテーブルにデータを準備しておきましょう。

$message = new App\Message();
$message->name = '山田太郎';
$message->body = '書き込みのテストです';
$message->save();
$message = new App\Message();
$message->name = '山本一郎';
$message->body = '2つめの書き込みのテストです';
$message->save();
$message = new App\Message();
$message->name = '山田花子';
$message->body = '3つめの書き込みのテストです';
$message->save();

tinkerから上記を実行しておきます。

コントローラからモデルを利用する。

では、SampleControllerからMessageモデルを利用してみましょう。

以下のメソッドをSampleControllerに追記します。

    public function message_sample(){
        $message = \App\Message::all()->first();
        return view('message_sample',[
            'message' => $message,
        ]);
    }

\App\Message::all() の後に first() メソッドを利用することによって、全件のうち一つ目のレコードを取得しています。

続いて、viewを作成します。

message_sample.blade.php を追加して、

message_sample.blade.php

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Messageモデルの利用</title>
</head>
<body>
    <h1>Messageモデルの利用</h1>
    <p>
        {{ $message->name }}:
        {{ $message->body }}
    </p>
</body>
</html>

上記の内容で保存しましょう。

さらにルーティングを行います。

web.php

(略)

Route::get('/message_sample', 'SampleController@message_sample');

以上で完成です。

http://localhost/message_sample

(Docker Toolboxの場合は http://(dockerのipアドレス)/message_sample )

にアクセスして表示を確認してみましょう。

このように、Controllerのアクション内でモデルを利用してDB内の情報を取得し、viewに変数として渡すことでDB上のデータを利用したページを作成することができます。

モデルを利用することで、Controllerに直接DB操作のコードを書くよりもずっとシンプルな記述になります。

results matching ""

    No results matching ""