読者です 読者をやめる 読者になる 読者になる

laravelで空白の代わりにnullを登録したい

larabelのEloquent使って以下のようにデータを登録しようとするとフォームにデータが入っていないカラムは空白で登録されてしまう。

<?php
Hoge::create($request->all());

Hogeモデルの中で以下のようにミューテータを定義しておけばnullに変換して登録してくれる。

<?php
public function setHogaAttribute($field)
{
  $this->attributes['hoga'] = trim($field) !== '' ? $field : null;
}

追記

Hogeモデル内の全カラムに対して適用する場合は以下のようにするとよさ気。

<?php
public static function boot()
{
    parent::boot();

    static::saving(function ($model) {
        foreach ($model->attributes as $key => $value) {
            if ($value !== 0) {
                $model->{$key} = empty($value) ? null : $value;
            }
        }
    });
}