[[Laravelめも]]

データベースでstatusフィールドが0:無効、1:有効のように数値で持っている場合、Bladeテンプレート側でどうやって文字列表示させるのが効率が良いのか考えました。

*configに書く [#k85d3326]

config以下にファイルを作成し、設定する方法があります。

config/const.php

 <?php
 
 return [
     'statues' => [
         0 => '無効',
         1 => '有効',
     ],
 ];

*Eloquentのアクセサーを使う [#f6b6f032]

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



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS