Php Laravel雄辩:输入合并模型
我想知道如何将Php Laravel雄辩:输入合并模型,php,laravel,laravel-eloquent,Php,Laravel,Laravel Eloquent,我想知道如何将Input::all()中的数据与模型合并并保存结果 澄清一下:我想做如下事情: $product = Product::find(1); // Eloquent Model $product->merge( Input::all() ); // This is what I am looking for :) $product->save(); 您应该使用update方法: $product->update(Input::all()); 但我建议只使用方
Input::all()
中的数据与模型合并并保存结果
澄清一下:我想做如下事情:
$product = Product::find(1); // Eloquent Model
$product->merge( Input::all() ); // This is what I am looking for :)
$product->save();
您应该使用
update
方法:
$product->update(Input::all());
但我建议只使用方法
$product->update(Input::only('name', 'type...'));
除了Razor的答案,如果您需要创建新模型,您可以使用:
$product = Product::create(Input::all());
使用模型的fill()
方法进行更好的控制。这使我们可以在保存前合并值后更改属性:
$product->fill($request->all());
$product->foo = 'bar';
$product->save();
如果我们有模型的$filleble
属性,就不需要使用Input::only(…)
(或者$request->only(…)
在新版本中)。谢谢!刚刚尝试过,但将数据传递到save()不会(不幸地)保存任何内容:/n您尝试过这个吗?如果您实例化一个新模型:$product=new product
您可以使用save
方法。当您声明protected$filleble=['field_1','field_n']时,您可以使用all()
方法代码>在您的模型中。然后,只有这些列被大量分配,攻击者可能没有添加其他字段。请参阅@cy rossignol answer。这允许在每次调用update()
方法(控制器)时添加更多正在更新的字段。但是:正在获取输入
类中的任何数据。我必须处理在
创建的、在
更新的和在
删除的吗?这里使用的是Laravel 5.6。@罗兰,只要我们不在$filleble
中声明这些属性,我们就不需要过滤掉它们。