解決したい事
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にすんの面倒だなぁと思いましたが、ミューテタ君に助けてもらう事にします。