Laravelめも

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

configに書く

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

config/const.php

<?php

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

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


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