Laravel8 accessorについて(DBから取得した値を加工する方法)

DBに格納されている値を加工して表示したいケースは多々ある。
例えば、数値型で金額カラムに格納されている値をカンマ区切り+”円”を文字列連結して返す関数を定義する方法。

モデルに以下を追記

protected $appends = [
    'view_price'
];

するとモデルにview_priceが追加される。

実際のコードを記述する。
ルールは、getxxxxxAttribute()とする。
xxxxの部分は、appendsで定義した名前をアッパーキャメルケースにしたもの。
view_priceの場合だと、getViewPriceAttribute()となる。

    public function getViewPriceAttribute()
    {
        return number_format($this->price).'円';
    }

あとは、表示したいところで

モデル->view_price;

でカンマ区切り+”円”で表示される。

と、書いておきながらアレだけど
個人的には、さきほどのgetViewPriceAttribute()と同じ処理をするメソッドを以下のように書いて

    public function getViewPrice()
    {
        return number_format($this->price).'円';
    }

必要な時にコールする方がいいなって思う。
その方がコーディングも楽だし、レコード取得時、強制的に処理が実行されるのもちょっと嫌だな。
Ajaxなど表示したいところでモデルのメソッドがコール出来ないような状況だとアリかもしれないけど。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です