在Laravel中检索提交的空输入数据

时间:2018-07-11 15:18:08

标签: laravel input request nullable

我正在尝试使用通过PUT / POST方法通过经典形式提交的数据来更新laravel应用程序中的指定资源:

Model::find($id)->update($request->all());

这很好,除了我提交带有空输入的表单的情况。然后,我将在请求中拥有除空输入数据之外的所有值,因此更新过程不完整。

我知道我可以检查每个请求参数是否存在,如果不存在,请为它分配一个NULL值,但是我试图避免这种情况,我想知道Laravel是否检索到可以通过Request访问的空数据。

3 个答案:

答案 0 :(得分:1)

//remove the _token from the request
$data = request()->except(['_token']);
// then with array_filter remove empty array values from $data
$result = array_filter($data);
//finally update your record
Model::find($id)->update($result)

编辑:

您想保留所有字段,甚至是空字段吗?

在您的请求中添加规则,如果您不希望验证程序将空值视为无效,则将“可选”请求字段标记为可空,这是规则的示例:

public static $rules = [
'first_name' => 'nullable|string',
'last_name' => 'nullable|string'
];

答案 1 :(得分:0)

使用array_filter(request()-> all())检查。 即

Model :: find($ id)-> update(request()-> all()):

答案 2 :(得分:0)

代替使用request-> all()显式地设置字段,并使用一个后备选项。 就像是: Model::find($id)->update([ 'this' => $request->this ?? '', 'that' => $request->that ?? '', ]);

比较麻烦,但是可以完成工作。