モデルファイルに $appends プロパティをセットします
// SELECTされるデータセットに次の独自カラムを追加する
protected $appends = ['_editable_flag' , '_email_aisatsu' ];
任意のタイミングで appends に追加したいときにはメソッドを使用します。
return $user->append('is_admin')->toArray();
Laravelのモデル(Eloquent)の結果セット(Collection)に手動で任意のカラムを追加するには map() を使用します。
// コレクションのすべてのデータにurl = http://your.url/here を追加
$collection->map(function ($v) {
$v['url'] = 'http://your.url/here';
return $v;
});
// コレクションそれぞれに count=xxx (任意の値) を追加
$collection->map(function ($v) {
$v['count'] = <計算ロジック>;
return $v;
});
user_code カラムを隠して結果セットをjsonで返します
$collection->setHidden(['user_code'])->toJson(JSON_UNESCAPED_UNICODE)
getCollection() で コレクションを取り出してから行います
$paginator->getCollection()->map(function ($v) {
$v['count'] = <計算ロジック>;
return $v;
});
少し書式を変えたいときは Accessor /Mutator を使いましょう
モデルファイルに以下を記述
/**
* ● アクセサー : ->_star_mark で is_starred=1 の時に ☆ を表示する
*
*/
public function getStarMarkAttribute()
{
if ($this->attributes['is_starred'] == 1){
return '<div class="text-warning">★</div>';
}
}
呼び出し方
$model->star_mark
/**
* アクセサー : 「->dispatch_date_ja」 で 値「dispatch_date」が存在する時にフォーマットして表示する。存在しない場合は未発送を返す。
*/
public function getDispatchDateJaAttribute()
{
if ( $this->attributes['dispatch_date'] != null ){
$c = new \Carbon\Carbon($this->attributes['dispatch_date']);
return $c->format('m/d');
} else {
return '<span class="text-danger">未発送</span>';
}
}
呼び出し方
$model->dispatch_date_ja