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】Eloquentモデルでデータ保存・取得時に値を加工する

Last updated at Posted at 2022-07-06

配列を文字列として保存したり、取得時に文字列から配列にしたいといったように、DBからのデータ取得・保存時に値を加工するやり方を紹介します。

Eloquentモデルで値を加工する

Eloquentモデル内に下記の記述をすることで値の取得・保存時に加工を自動で行うことができます。

    // Eloquentで値を取得する際に自動で呼ばれる
    // カラム名はアッパーキャメルケース
    public function getカラム名Attribute($value)
    {
        // 値を加工する処理

        // 加工後の値をリターン
        return 加工後の値
    }

    // Eloquentで値を保存する際に自動で呼ばれる
    // カラム名はアッパーキャメルケース
    public function setカラム名Attribute($value)
    {
        // 値を加工する処理

        // Eloquentモデルが持つattributeプロパティに加工後の値をセット
        // リターンは必要ない
        $this->attributes['カラム名'] = 加工後の値
    }

getカラム名Attribute()はデータの取得時に呼ばれます。valueが取得される値なのでvalueを加工してリターンします。
setカラム名Attribute()はデータの保存時に呼ばれます。加工後の値をEloquentモデルattributeプロパティに、カラム名をキーとして加工後の値をセットします。この時リターンは必要ありません。

以上で、Eloquentでのget()やfind()でデータ取得する際に加工された値を取得でき、save()などで加工された値を保存できるようになります。

単にキャストをしたい場合

Eloquentモデル内に下記の記述をすることで値の取得・保存時に指定した型に自動でキャストされます。

    protected $casts = [
        'カラム名' => '型名',
    ];

参考

Laravel 8.x Eloquent:ミューテタ/キャスト

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?