laravelで空白の代わりにnullを登録したい
追記: laravel5.4でConvertEmptyStringsToNullとか言う素敵ミドルウェアが出たので今後はそっちで。
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; } } }); }