Laravel"类型错误:使用PUT/PATCH方法更新记录时

Has*_*Ali 3 php laravel

当我运行更新控制器它给我这个错误,我尝试从这个相同的平台有这个错误的不同的解决方案但他们的修复是用这样的保存($ product)的单独语法更新.我正在使用Model Store进行身份验证并保存数据或编辑删除.

"错误类型:参数1传递给照亮\数据库\雄辩\关系\ HasOneOrMany ::保存()必须照亮\数据库实例\口才\模型,给出阵列,称为C:\ XAMPP\htdocs中\购物\应用\ Http\Controllers\ProductController.php 138行◀"

更新方法

 public function update(Request $request, Product $Product){
      $store = Store::where('user_id', Auth::user()->id)->first();
      $updateProduct = $store->product()->save([
         'name'=> $request->input('name'),
         'description' => $request->input('description'),
         'normal_price' => $request->input('normal_price'),
         'sale_price' => $request->input('sale_price'),
         'category_id' => $request->input('category_id'),
     ]);
         return redirect('product')->with('status', 'Product Updated');
 }
Run Code Online (Sandbox Code Playgroud)

查看编辑表单

 <form method="post" action="{{route('product.update', $product->id)}}">
                                {{ csrf_field() }}
                                {{ method_field('PUT') }}
Run Code Online (Sandbox Code Playgroud)

Ale*_*nin 5

当你使用save() Laravel期望的模型时.

使用create()方法.改变这个:

$updateProduct = $store->product()->save([
Run Code Online (Sandbox Code Playgroud)

至:

$updateProduct = $store->product()->create([
Run Code Online (Sandbox Code Playgroud)

或者这样做:

$updateProduct = $store->product()->save(new Product([
    'name'=> $request->input('name'),
    'description' => $request->input('description'),
    'normal_price' => $request->input('normal_price'),
    'sale_price' => $request->input('sale_price'),
    'category_id' => $request->input('category_id'),
]));
Run Code Online (Sandbox Code Playgroud)