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など表示したいところでモデルのメソッドがコール出来ないような状況だとアリかもしれないけど。