Laravel : アクセサとミューテタについて

Laravelでは、アクセサーとミューテーターは、モデルの属性を取得したり値を設定したりする際に操作するためのメソッドです。

例えば、以下の属性を含んだ “Article” モデルがあるとします: “title”、”body”、”published_at “です。title “属性は常に前後の空白が取り除かれ、”published_at “属性は常にdatetimeオブジェクトとして保存されることを保証したいです。これを実現するには、各属性に対してアクセサーとミューテーターメソッドを作成します。

以下は、”title “属性のアクセサーメソッドとミューテーターメソッドを作成する例で説明しています:

class Article extends Model
{
    // Accessor method for the "title" attribute
    public function getTitleAttribute($value)
    {
        return trim($value);
    }

    // Mutator method for the "title" attribute
    public function setTitleAttribute($value)
    {
        $this->attributes['title'] = trim($value);
    }
}

以下は、”published_at “属性のアクセサーメソッドとミューテーターメソッドを作成する例で説明しています:

class Article extends Model
{
    // Accessor method for the "published_at" attribute
    public function getPublishedAtAttribute($value)
    {
        return Carbon::createFromFormat('Y-m-d H:i:s', $value);
    }

    // Mutator method for the "published_at" attribute
    public function setPublishedAtAttribute($value)
    {
        $this->attributes['published_at'] = Carbon::parse($value)->format('Y-m-d H:i:s');
    }
}

この例では、「getPublishedAtAttribute」メソッドで「published_at」属性を文字列からCarbon datetimeオブジェクトに変換することで、作業をしやすくします。setPublishedAtAttribute」メソッドも、モデルに保存する前に値をdatetimeオブジェクトに変換しています。

このようにアクセッサとミューテータを使用することで、モデルを使うたびに手動でこれらの操作を行わなくても、モデルの属性が常に希望する形式で保存・取得されることを保証することができます。

金曜担当 – Ami



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム