Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel雄辩:输入合并模型_Php_Laravel_Laravel Eloquent - Fatal编程技术网

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
中声明这些属性,我们就不需要过滤掉它们。