はじめに
今回はLaravelのget〜Attributeメソッドを利用して、欲しい値を加工する方法をまとめたいと思います。
アクセサについて
アクセサを定義するには、アクセスしたいカラム名が「studlyケース(Upper Camel Case)」でFooの場合、getFooAttributeメソッドをモデルに作成します。以下の例では、first_name属性のアクセサを定義しています。first_name属性の値にアクセスが起きると、Eloquentは自動的にこのアクセサを呼び出します。
get〜Attributeメソッドの実装例
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* ユーザーの氏名を取得
*
* @param string $value
* @return string
*/
public function getFullNameAttribute($value)
{
return "{$this->first_name} {$this->last_name}";
}
}
モデルにこのように定義するとこの値を使用したいコントローラー層やサービス層などで、例えば$this->full_name
のように実装すると値を取得することができます。
おわりに
いかがでしたでしょうか。
get〜Attributeメソッドはとても便利なので是非活用してみてください。