|
データベースでstatusフィールドを0:無効、1:有効のように数値で持っている場合、Bladeテンプレート側でどうやって文字列表示させるのが効率が良いのか考えました。 configに書く†config以下にファイルを作成し、設定する方法があります。 config/const.php <?php
return [
'statuses' => [
0 => '無効',
1 => '有効',
],
];
Bladeテンプレート側 {{ config('const.statuses')[$user->status] }}
コントローラ側からBlabeに渡してやる方法もありです。 return view('home', ['status' => config('const.statuses')[$user->status]]);
configにまとめて設定できるのは良さげですが、なんだかスッキリしません。 Eloquentのアクセサを使う†Eloquent(エロクエント)とはデータベースとモデルを紐付ける機能です。 accessors(アクセサ)を利用すれば値の取得時に自動的に呼び出されます。 <?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
static $statuses = [
0 => '無効',
1 => '有効',
];
class User extends Model
{
/**
* ユーザーの状態を取得
*
* @param integer $value
* @return string
*/
public function getStatusAttribute($value)
{
return self::$statuses($value);
}
}
Bladeテンプレート側では何も考えずにechoするだけです。 {{ $user->status }}
逆にsetしたい場合はmutators(ミューテタ)を使用します。 https://readouble.com/laravel/5.5/ja/eloquent-mutators.html |