データ取得

get() メソッド

テーブルから商品データを取得するには、Eloquentモデルのget() メソッドを実行します。

データ = モデル名::get();

ディレクティブ

Bladeの構文では、@(アットマーク) でコードするディレクティブという機能があります。if文やforeach文などの構造はPHP標準に似ています。

if文

@if
HTMLの内容
@endif

foreach文

@foreach($items as $item)
HTMLの内容
@endforeach

商品一覧

Itemモデルの利用

Admin/ItemControllerコントローラーでItemモデルをuseします。

use App\Models\Item;

items テーブルからデータ取得

Admin/ItemControllerコントローラーにindexアクションを追加し、itemsテーブルから商品データを取得します。取得データはdd() でデバッグ表示してみます。

public function index()
{
    $items = Item::get();
    dd($items);
    return view('admin.item.index', $data);
}

商品一覧画面にアクセスすると、商品データの詳細が表示されます。データは、▲マークを開いていくと、attributesに入っています。

Bladeにデータ受け渡し

Bladeファイルにデータを受け渡すには、連想配列にしてview() の第2引数に代入します。連想配列のキーはitemsとしました。

public function index()
{
    $items = Item::get();
    $data = ['items' => $items];
    return view('admin.item.index', $data);
}

商品一覧画面

admin/item/index.blade.php$itemsforeach文で一覧表示します。

<table class="table">
  <tr>
    <th></th>
    <th>{{ __('Item Name') }}</th>
    <th>{{ __('Item Code') }}</th>
    <th>{{ __('Price') }}</th>
  </tr>
  @if ($items)
  @foreach ($items as $item)
  <tr>
    <td></td>
    <td>{{ $item->name }}</td>
    <td>{{ $item->code }}</td>
    <td>{{ $item->price }}</td>
  </tr>
  @endforeach
  @endif
</table>

データ表示確認

商品一覧に追加した商品が表示されるか確認してみましょう。

ソース

Admin/ItemController.php
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Item;

class ItemController extends Controller
{
    public function index()
    {
        $items = Item::get();
        $data = ['items' => $items];
        return view('admin.item.index', $data);
    }

    public function create()
    {
        return view('admin.item.create');
    }

    public function add(Request $request)
    {
        $posts = $request->all();
        Item::create($posts);
        return redirect()->route('admin.item.index');
    }
}
admin/item/index.blade.php
<h2>商品一覧</h2>
<a href="{{ route('admin.item.create') }}">新規追加</a>

<table class="table">
  <tr>
    <th></th>
    <th>{{ __('Item Name') }}</th>
    <th>{{ __('Item Code') }}</th>
    <th>{{ __('Price') }}</th>
  </tr>
  @if ($items)
  @foreach ($items as $item)
  <tr>
    <td></td>
    <td>{{ $item->name }}</td>
    <td>{{ $item->code }}</td>
    <td>{{ $item->price }}</td>
  </tr>
  @endforeach
  @endif
</table>

Laravel超入門