16. 商品一覧
データ取得
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に $itemsをforeach文で一覧表示します。
<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>