2
1

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] 空文字をDB登録時にnullにしたい

Last updated at Posted at 2022-03-08

解決したい事

nullableなdate型のカラムがありますと。
空文字の状態で送られてDBに入れようとするとエラー吐いちゃう。

対処法

空だったらnull入れるパターン、毎回書くのは大変面倒くさい

$hoge->fuga = empty($fuga) ? null : $fuga;

ミューテターなるものを書こう。

モデルへ属性の値を設定しようとすると自動的に呼び出してくれるらしい、なんと便利な。
Laravel 8.x Eloquent:ミューテタ/キャスト

class Hoge extends Model
{
    public function setFugaAttribute($value)
    {
        $this->attributes['fuga'] = empty($value) ? null : $value;
    }
}

これで空文字のままぶち込もうとしてもミューテタ君が働いてせっせとnullを入れてくれる訳だ。

$hoge->fuga = $fuga;

余談

livewireで宣言するpublicプロパティ
初期値がnullなので初期値の状態でそのプロパティを使ってDBに登録しようとしてもnullのまま入ってくれるが、何か入力してから入力した内容を消すと空文字になるのでnullにすんの面倒だなぁと思いましたが、ミューテタ君に助けてもらう事にします。

参考:【Laravel】アクセサ、ミューテタの基本のキ

2
1
1

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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?