我想提交一份包含许多领域的表格
作为documentation
$flight = new Flight;
$flight->name = $request->name;
$flight->param1 = $request->param1;
$flight->param2 = $request->param2;
...
$flight->param_n = $request->param_n;
$flight->save();
如果有太多的字段,这是一个坏主意 我正在寻找任何类似的脚本:
$flight = new Flight;
$flight->save($request->all());
但$request->all()
函数有不必要的字段
什么是最好的方法?
答案 0 :(得分:7)
只要您的模型属性与您的请求属性完全匹配,您就可以使用模型$fillable
数组。
$flight = new Flight();
$data = $request->only($flight->getFillable());
$flight->fill($data)->save();
您需要为要使用此行为的任何模型指定可填写字段。
对于Laravel 5.4及更低版本使用intersect
代替only
否则,您只需将请求中的属性列入白名单
即可$data = $request->only(['param1', 'param2' ...]);
答案 1 :(得分:1)
有各种方法。您可以将不需要的值排除为
$ data = $ request->([' _token',' _method',' etc']);
最好的方法是验证数据。 viz在服务器端的表单输入上应用验证。
$ validated_data = $ request-> validate([' field1' =>' required',' field2' =>' required& #39;]);
等。您可以在每个字段上应用所需的验证,只有经过验证的字段将在$ validated_data变量中,然后您可以保存它们。