LaravelでModelにある配列を呼び出す方法についての備忘録です。
カラムから紐づけるテーブルを新しく作る必要がない時などに使用できると思います。
やりたいこと
- Modelにある配列をViewに渡し、int型のデータを任意の文字列に置き換える。
モデルに配列を挿入
モデルに配列を追加します。
Model
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Item extends Model
{
use HasFactory;
protected $fillable = ['name'];
const TYPES = [
0 => 'カジュアル',
1 => 'モード',
2 => 'キレイめ',
3 => 'ナチュラル',
4 => 'コンサバ',
];
}
ViewにItemの定数を呼び出す
view
<td>{{App\Models\Item::TYPES[0]}}</td>
結果:'カジュアル'
実装例
Controllerから渡ってきた変数をForeachで繰り返しの処理をする時に使用できます。
例ではtypeカラムにあるint型のデータをモデルの配列で置き換えています。
controller
public function show(Request $request)
{
$items = Item::all();
return view('item.show', compact('items'));
}
view
@foreach ($items as $item )
<tr>
<td>{{App\Models\Item::TYPES[$item->type]}}</td>
</tr>
@endforeach
本来はカテゴリテーブルのような新しいテーブルを作った方が良いと思いますが、超簡単に実装できる方法の一つとしてはアリかな...