1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Laravel]アクセサ、ミューテタの基本

Posted at

はじめに

今回はLaravelのアクセサ、ミューテタについて調べたので、備忘録として残しておきます。

環境

  • Laravel:8.83.4

1. アクセサ、ミューテタとは

アクセサとは、データベースから取得したデータをフォーマットするためのメソッドです。
アクセサを使うことで、加工したデータをフロント側に返すことができます。

ミューテタは、インスタンスに値を設定する際にデータをフォーマットするためのメソッドです。

2. アクセサを使ってみる

下記のコードでupdated_atカラムを取得する時にgetUpdatedAtAttributeが実行されます。
下記は、DBにタイムスタンプ型で存在するupdated_atカラムを「2022-08-03 20:00:00」のような書式で返したい場合のコードです。
引数の$value(updated_atのデータ)を加工して返します。

public function getUpdatedAtAttribute($value)
{
    return Carbon::parse($value)->toDateTimeString();
}

下記のようにDBからデータを取得するときに、getUpdatedAtAttributeが実行され、データを加工して返します。

$post = App\Post::find(1);

$updatedAt = $post->updated_at;

上記のように、アクセサはDBからのデータ取得時にデータを加工できます。

3. ミューテタを使ってみる

下記のコードの場合、contentカラムの保存時に自動で setContentAttributeが実行されます。

public function setContentAttribute($value)
{
   $this->attributes['content'] = strtolower($value);
}

このようにすると、 文字列で "Content"という値をインスタンスに設定するときに、 "content" と小文字に変換されてから保存されます。

$post = Post::find(1);

$post->content = 'Content';
$post->save();

上記のように、ミューテタはデータをDBに保存する際にデータを加工することができます。

以上で実装完了です。

4. 参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?