不应静态调用非静态方法Illuminate\Database\Eloquent\Model::update(),并



1(当我试图在控制器的更新功能中使用Model时,我得到了错误?这可能是什么原因。我得到错误:非静态方法Illuminate\Database\Eloquent\Model::update((不应静态调用

2( 另一个问题是我的删除功能不会删除产品。它重定向到另一个页面。路线上可能有什么错误?

ProductController.php

<?php
namespace AppHttpControllers;
use AppModelsProduct;
use IlluminateHttpRequest;
class ProductController extends Controller
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
$products=product::all();
return view('products', ['products'=>$products]);
}
/**
* Show the form for creating a new resource.
*
* @return IlluminateHttpResponse
*/
public function create()
{
return view('createProduct');
}
/**
* Store a newly created resource in storage.
*
* @param  IlluminateHttpRequest  $request
* @return IlluminateHttpResponse
*/
public function store(Request $request)
{
Product::create(request()->validate([
'title' => 'required',
'type' => 'required',
'firstname' => 'required',
'surname' => 'required',
'price' => 'required',
'papl' => 'required'
]));

return redirect('/products');
}
/**
* Display the specified resource.
*
* @param  AppModelsProduct  $product
* @return IlluminateHttpResponse
*/
public function show(Product $id)
{

return view('singleProduct', ['product'=>$id]);
}
/**
* Show the form for editing the specified resource.
*
* @param  AppModelsProduct  $product
* @return IlluminateHttpResponse
*/
public function edit(Product $id)
{

return view('editProduct', ['product'=>$id]);
}
/**
* Update the specified resource in storage.
*
* @param  IlluminateHttpRequest  $request
* @param  AppModelsProduct  $product
* @return IlluminateHttpResponse
*/
public function update(Product $id)
{
Product::update(request()->validate([
'title' => 'required',
'type' => 'required',
'firstname' => 'required',
'surname' => 'required',
'price' => 'required',
'papl' => 'required'
]));

return redirect('/products');
}
/**
* Remove the specified resource from storage.
*
* @param  AppModelsProduct  $product
* @return IlluminateHttpResponse
*/
public function destroy($id)
{
$product=product::find($id)->delete();
return redirect('/products');
}
}

型号:Product.php

<?php
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
class Product extends Model
{
//protected $guarded = [];
protected $fillable = ['title', 'type', 'firstname', 'surname', 'price', 'papl'];
//use HasFactory;

}

删除路线:

Route::delete('/products/{id}',[ProductController::class, 'delete'])->name('deleteProduct');

deleteProduct.blade.php

@extends('layouts/masterlayout')
@section('title', 'All Products')
@section('mainbody')
<form method = "POST" action="../../products/{{$product->id}}">
@csrf
@method('DELETE')
<label>Product Name</label>
<input type = "text" name="title" value="{{$product->title}}">
<label>Product Type</label>
<input type = "text" name="type" value="{{$product->type}}">
<label>Price</label>
<input type ="number" name="price" value="{{$product->price}}">
<label>Firstname</label>
<input type ="text" name="firstname" value="{{$product->firstname}}">
<label>Surname</label>
<input type ="text" name="surname" value="{{$product->surname}}">
<label>Playlength/ PageNumber</label>
<input type ="number" name="papl" value="{{$product->papl}}">
</form>
@endsection

控制器

<?php
namespace AppHttpControllers;
use AppModelsProduct;
use IlluminateHttpRequest;
class ProductController extends Controller
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
$products = Product::all();
return view('products', compact('products'));
}
/**
* Show the form for creating a new resource.
*
* @return IlluminateHttpResponse
*/
public function create()
{
return view('createProduct');
}
/**
* Store a newly created resource in storage.
*
* @param  IlluminateHttpRequest  $request
* @return IlluminateHttpResponse
*/
public function store(Request $request)
{
Product::create($request->validate([
'title'     => 'required',
'type'      => 'required',
'firstname' => 'required',
'surname'   => 'required',
'price'     => 'required',
'papl'      => 'required'
]));
return redirect('/products');
}
/**
* Display the specified resource.
*
* @param  AppModelsProduct  $product
* @return IlluminateHttpResponse
*/
public function show(Product $product)
{
return view('singleProduct', compact('product'));
}
/**
* Show the form for editing the specified resource.
*
* @param  AppModelsProduct  $product
* @return IlluminateHttpResponse
*/
public function edit(Product $product)
{
return view('editProduct', compact('product'));
}
/**
* Update the specified resource in storage.
*
* @param  IlluminateHttpRequest  $request
* @param  AppModelsProduct  $product
* @return IlluminateHttpResponse
*/
public function update(Product $product, Request $request)
{
$product->update($request->validate([
'title'      => 'required',
'type'       => 'required',
'firstname'  => 'required',
'surname'    => 'required',
'price'      => 'required',
'papl'       => 'required'
]));
return redirect('/products');
}
/**
* Remove the specified resource from storage.
*
* @param  AppModelsProduct  $product
* @return IlluminateHttpResponse
*/
public function destroy(Product $product)
{
$product->delete();
return redirect('/products');
}
}

型号

<?php
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
class Product extends Model
{
use HasFactory;
protected $fillable = [
'title', 'type', 'firstname', 'surname', 'price', 'papl'
];

}

Web.php

<?php
use IlluminateSupportFacadesRoute;
Route::resource('product', ProductController::class);

刀片文件

@extends('layouts.masterlayout')
@section('title', 'All Products')
@section('mainbody')
<form method="POST" action="{{ route('product.destroy', $product->id) }}">
@csrf @method('delete')
<label>Product Name</label>
<input type="text" name="title" value="{{ $product->title }}">
<label>Product Type</label>
<input type="text" name="type" value="{{ $product->type }}">
<label>Price</label>
<input type="number" name="price" value="{{ $product->price }}">
<label>Firstname</label>
<input type="text" name="firstname" value="{{ $product->firstname }}">
<label>Surname</label>
<input type="text" name="surname" value="{{ $product->surname }}">
<label>Playlength/ PageNumber</label>
<input type="number" name="papl" value="{{ $product->papl }}">
</form>
@endsection

最新更新