Laravel アクセサについて

laravel-accessor Laravel

余談

今日でブログを初めて3回目の投稿です!

毎日投稿なんてできる余裕はないので、公言はしませんがなるべく多く投稿していけたらいいなと思ってます。

毎日続けることって簡単そうで結構難しいことですよね…

私は最近モチベーション(以下モチベ)という概念を自分の中から捨てようとしてます。

モチベの上下でその時の勉強をやる/やらないを決めていたら継続もクソもないことに気づき、最近そのモチベの概念自体を取っ払ってしまえばいいんじゃね?!という考えにいたりました笑

あってるかも分からないし、できるかも分からない。でも2年くらい意識して続ければ自分に定着できるんじゃないかなと勝手にイメージで見積もってます。

気軽に気楽に気長に概念を捨てられたらなと!

でもやる気出ない日、休日は遊びたい…などなど勉強をしたくない日があります!

はい!実は今日がその日です!!!でも私はやらなければならない!と自分を騙して書いています。正直に言ってしまうとね…

でもそんなエンジニアがいてもいいと思うんですよ。

だってエンジニア頑張ってる人ってみんなキラキラしすぎていませんか?

私は泥臭く泥水啜って身悶えながらそれでも地面に這いつくばって這いずり回ってでも強強エンジニアになりたいんですよ!!!

こんなエンジニアがいたっていいじゃないか!!!

という思いでこの記事を書いてます笑

すみません。少し長くなってしまいましたね…

それでは本題へ!

アクセサとは

LaravelのAccessorは、Eloquentモデルでデータを取得する際に、その値をカスタマイズするために使用されるメソッドです。

アクセサを使うことで、データベースから取得した値を加工して返すことができます!

例えば、日付や文字列をフォーマットしたり、複雑なロジックを処理したりする時に役に立つらしいです。

フォーマットは分かるんだけど、「複雑なロジックを処理」ってのがいまいちイメージできないな…

アクセサの基本的な使い方

アクセサを定義するには、モデルクラス内に特定の形式に従ってメソッドを作成します。

メソッド名はgetで始まり、キャメルケース表記に続け、後ろにAttributeをくっつけた名前にします。

例:getFullNameAttributegetImagePathAttribute

getFullNameAttribute$this->first_name$this->last_nameをくっつけたものを返すアクセサ。

getImagePathAttributeはアップロードされた画像のパス先を調整して返すアクセサ。

として今考えました..!

getFullNameAttributeについて実際に書いてみましょう。

ユーザーの first_name(John) と last_name(Doe) を結合してフルネームを返すアクセサを定義します。

class User extends Model
{
    // フルネームを返すアクセサ
    public function getFullNameAttribute()
    {
        return $this->first_name . ' ' . $this->last_name;
    }
}

このアクセサを使用することで、以下のように full_name 属性を呼び出すことができます。

$user = User::find(1);
echo $user->full_name; // "John Doe" のようにフルネームが返る

あくまでアクセサは元のデータは変えず、ロジック上でデータを加工し返す

ということを行っています。

一つ注意点として、アクセサを定義するモデル側ではキャメルケース、アクセサを使用する側ではスネークケースで書く必要があります。

最後に

今回はLaravelのアクセサについて勉強しました!

Laravelが裏側で色々自動的にやってくれるのは凄く楽だなと思う反面、プログラミングを学ぶ機会というかもっと根本的な何かを学ぶ機会が少ないと感じる時があります。

うまく言語化できていませんが…笑

ともかく今はLaravelの学習をすることが最優先ですね!

次は何を勉強しよう🤔

コメント

タイトルとURLをコピーしました