🎯 やりたいこと
LaravelでEC風アプリを作る中で、「すでに購入された商品にはSOLDラベルを表示」という機能を実装しました。
🧩 前提
- Laravel 10
- Bladeテンプレート使用
- 購入情報は
purchases
テーブルに保存(1商品=1購入の前提)
✅ 実装の流れ
- モデルにリレーションを追加
- コントローラーでリレーションを読み込む
- Bladeで条件分岐してラベル表示
- CSSで目立たせる
🧠 モデルの設定
// Item.php
public function purchase()
{
return $this->hasOne(Purchase::class);
}
✅ 実装の流れ
- 購入済みかどうかを判定するフラグを
ItemController@show
に追加 - Bladeで条件分岐して「SOLD」ラベルを表示
- CSSで目立たせる
🧠 コントローラー側
// ItemController.php
public function show($id)
{
$item = Item::with('purchase')->findOrFail($id);
return view('items.show', compact('item'));
}
🖥 Bladeの表示部分
@if ($item->purchase)
<span class="sold-label">SOLD</span>
@endif
🎨 CSS(例)
.sold-label {
background-color: red;
color: white;
padding: 4px 8px;
border-radius: 4px;
font-weight: bold;
}