如果将编辑表单字段保留为空,如何在数据库中保留数据

时间:2019-03-01 06:10:44

标签: php database laravel laravel-5 eloquent

在创建表单(> 50个字段)时,我从用户那里得到了很多输入,我想在其中编辑那些详细信息。

我已将所有字段设置为可空,以便在编辑时将这些字段保留为空,

控制器:

public function update(Request $request, $id)
{
     $engineers = Engineers::findOrFail($id);
     $engineers->input1 = $request->input('input1');
     $engineers->input2 = $request->input('input2');
     $engineers->input3 = $request->input('input3');
     $engineers->input4 = $request->input('input4');
     $engineers->save();
}

当我尝试编辑input2时,所有内容都保留为空白时,数据库中的所有其他字段均为空白。

我发现的另一个选择是

public function update(Request $request, $id)
{
    $engineers = Engineers::findOrFail($id);
    if($request->input('input1')){
        $engineers->input1 = $request->input('input1');
    }
    if($request->input('input2')){
        $engineers->input2 = $request->input('input2');
    } 
    if($request->input('input2')){
        $engineers->input2 = $request->input('input2');
    }
     if($request->input('input2')){
        $engineers->input2 = $request->input('input2');
    }

    $engineers->save();
}

通过执行上述操作,相应的记录将更改,所有其他字段保持不变。

我还注意到可以提交一个空的编辑表单。

还有其他更好的方法吗?

3 个答案:

答案 0 :(得分:1)

在这种情况下,使用filled

$request方法。

if($request->filled('name')){
  //if name is present in request object and not empty.
}

详细了解here

答案 1 :(得分:1)

这样做,这一步看起来也很短,

$engineers = Engineers::findOrFail($id);
$engineers->fill($request->all())->save();

答案 2 :(得分:1)

您可以在填写条目之前过滤输入,例如:

$engineers = Engineers::findOrFail($id);
$engineers->fill(array_filter($request->all()))->save();

这将删除所有虚假条目,即null以及0''

如果要严格删除null,则可以执行以下操作:

$engineers = Engineers::findOrFail($id);
$engineers->fill(array_filter($request->all(), function ($value) { 
        return $value !== null; 
}))->save();