2017-12-15 8 views
1

私はデータベース内のヌル可能な列に格納されているテキストフィールドを持つフォームを持っています。私の問題は、ユーザーがフィールドを空白にするときです。私はnull値としてそれを格納する必要がありますが、空の文字列として格納されます。フォームの空のフィールドからNULL値を取得するにはどうすればよいですか?

ブレード:

{!! Form::open(array('action' => '[email protected]', 'method' => 'POST')) !!} 
    {{ csrf_field() }} 

    {!! Form::text('nome', old('nome')) !!} 
    {!! Form::textarea('descricao', old('descricao'), array('rows' => 3)) !!} 

{!! Form::close() !!} 

コントローラー:

public function store(Request $request) 
{ 
    Peca::create([ 
     'nome' => $request->input('nome'), 
     'descricao' => $request->input('descricao') 
    ]); 

    return redirect(action('[email protected]')); 
} 

これを克服する方法は?

答えて

1

この場合、その属性のミューテータを定義する必要があります。 https://laravel.com/docs/5.5/eloquent-mutators

public function setNomeAttribute($value) { 
    $this->attributes['nome'] = $value !== '' ? $value : null; 
} 

あなたは、あなたのモデルクラスにしたい任意の属性のためにそれを定義する必要があります。

+0

これは良い戦略ですが、コード内のすべての属性に対して行う必要があります。しかし、答えをありがとう! –

+0

ConvertEmptyStringsToNullはここで正しい答えになります –