🌟

【Laravel】AccessorでEloquent属性値を変換して処理を共通化する

2022/02/07に公開

概要

Eloquent Model から取得したIDをハッシュ化する処理をAccessorを利用して行ってみましたので紹介します

アクセサは、Eloquentの属性値にアクセスしたときに、その値を変換するものです。アクセサを定義するには、モデルにget{Attribute}Attributeメソッドを作成します。

https://laravel.com/docs/8.x/eloquent-mutators#attribute-casting

Accessor の定義

  • {カラムのアッパーキャメルケース}Attribute の形式でメソッドを命名する
    • 今回はhash_idにハッシュ化したIDを格納しますのでHashIdとしています
User.php
/**
 * Attributeにhash_id属性を生成するアクセサ
  * @return string
*/
public function getHashIdAttribute()
 {
   return urlencode(Hash::make($this->id));
 }
$user = User::query()->findOrFail(1);

// Accessorで変換されたカラム名にアクセスするとハッシュ化した値を取得できます
dd(user->hash_id);

さいごに

今回はAccessorの仕組みについて紹介しました。
いいねしていただけると記事執筆の励みになりますので、参考になったと思った方は是非よろしくお願いします!

GitHubで編集を提案

Discussion