前提
- Laravelを最近はじめたばかりのエンジニアの卵です。
- 生暖かい目で見守ってください。
- また間違った情報があればご指摘いただけると泣いて喜びます。
アクセサ(Accessor)ってなに
- アクセサは、ある属性(プロパティ)の値を取得する際に、その値を変換して返す方法です。
使えそうな場面
- 「first_name」と「last_name」苗字と名前を別カラムで管理しているけど、表示するときはデータ取得する時にはそれをくっつけた「full_name」として取得したい!
- 金額を数値だけで取っているけど、「¥10,000-」みたいな形で取得したい!
- 頭文字だけ大文字にしたい!
→こんなときに便利です!!
使い方
1. モデルに記載していきます!
-
フルネームを取得する例 (例:「山田 太郎」)
User.phpprotected $appends = ['full_name']; # モデルのインスタンスがJSON形式に変換される際に、「full_name」の結果が新しい属性として追加する場合にいれる! public function getFullNameAttribute() { return $this->last_name . ' ' . $this->first_name; }
2. 実際呼び出してみる!
- アクセサ名の「getFullNameAttribute」部分の「get」と「Attribute」をなくした「FullName」→「full_name」スネークケースで記述することで呼び出せます!
-
Tinkerで検証!
Tinkerphp artisan tinker > $user = User::find(1); echo $user->full_name;
結果吉本 亮介⏎ >
表示された
-
3.さいごに
- Laravelには便利なものがたくさん集まっていて毎日楽しいです。
- 記載情報に不備などがあればご指摘いただけますと幸いです。