MENU

【Laravel】Model・Controller・Viewのデータ受け渡し方法をわかりやすく解説

目次

はじめに

Laravelは「MVC(Model・View・Controller)」という設計パターンを採用しています。

しかし、

  • モデルで取得した値はどうやってビューに渡すの?
  • コントローラーはどんな役割?
  • ビューではどうやって値を使うの?

といった部分で、最初は混乱しやすいです。

この記事では、実際のコード例を使いながら、モデル → コントローラー → ビューへの値の受け渡しの流れをわかりやすく解説します。

MVCとは?

まずは簡単に役割を整理します。

役割内容
Modelデータベースとやり取りをする
Controller処理の流れを制御する
View画面表示を担当する

流れとしては、

モデルでデータ取得

コントローラーで受け取る

ビューに渡す

画面に表示

という形になります。

モデルでデータを取得する

今回は「商品データ」を取得する例で説明します。

Productモデル

// app/Models/Product.php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    protected $table = 'products';
}

このモデルを使って、コントローラーからデータを取得します。

コントローラーでモデルの値を取得する

ProductController.php

use App\Models\Product;

public function index()
{
    $latest_products = Product::where('user_id', 1)
        ->whereIn('status', [1, 2])
        ->latest()
        ->take(10)
        ->get();

    return view('index', [
        'latest_products' => $latest_products,
    ]);
}

ここでやっていること

  1. Productモデルを使用
  2. 条件を指定してデータを取得
  3. $latest_products に代入
  4. view() の第2引数でビューへ渡す

view() で値を渡す仕組み

return view('index', [
    'latest_products' => $latest_products,
]);

この部分がとても重要です。

コードの意味

  • 左側(’latest_products’) → ビューで使える変数名
  • 右側($latest_products) → コントローラーで作った変数

つまり、

コントローラーの $latest_products を、
ビューでは $latest_products として使える

ということです。

ビューで値を使う

resources/views/index.blade.php

@foreach($latest_products as $product)
    <div class="product-item">
        <h2>{{ $product->name }}</h2>
        <p>{{ $product->price }}円</p>
    </div>
@endforeach

ここでポイントなのは、

  • view() で渡した変数はBladeファイル内でそのまま使える

ということです。

データ受け渡しの全体像まとめ

【Model】
Product::where(…)->get();

【Controller】
$latest_products に代入

view(‘index’, [‘latest_products’ => $latest_products])

【View】
$latest_products を使用

この流れがLaravelの基本形です。

よくある疑問

Q1. compactは使えるか?

もちろん使えます。

return view('index', compact('latest_products'));

こちらの方がシンプルに書けます。

Q2. 変数名は同じでないとダメ?

同じでなくてもOKです。

return view('index', [
    'products' => $latest_products,
]);

この場合、ビューでは $products になります。

まとめ

Laravelでの値の受け渡しは、次の3ステップです。

  1. モデルでデータ取得
  2. コントローラーで受け取る
  3. view()でビューに渡す

MVCの流れや構造を理解するだけで、Laravelのコードは一気に読みやすくなり世界が変わります。

Laravelを扱う際は常にMVCを意識して開発に取り組みましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Muta Blog運営者はデザインも開発もやるWebエンジニアです。
本ブログでは現場で培ったWebの知識やノウハウを発信しています。
Web制作歴5年/現在ReactやRubyを中心に幅広く学習中/

目次