函数 App\Http\Controllers\CategoryController::destroy() 的参数太少,传递了 0 个,预期正好是 1 个
Too few arguments to function App\Http\Controllers\CategoryController::destroy(), 0 passed and exactly 1 expected
我不能通过id删除它
我这里也有一些模型代码
class Category extends Model
{
// Table Name
protected $table = 'categories';
// Primary Key
public $primaryKey = 'id';
// TimeStamps
public $timestamps = true;
protected $fillable= ['name','icon'];
public function getAllCategory(){
return DB::table(categories)->get();
}
public function createCategory($name,$icon){
$category= $this->create([
'name' => $name,
'icon' => $icon,
]);
return $category;
}
}
//控制器中有一个函数:
public function destroy($id)
{
$category = Category::findOrFail($id);
$category->delele();
return redirect('/admin.category');
}
问题出在您看来的某个地方。例如,您有路线 category.destroy
,但您需要在创建 link 时传递要销毁的模型的 id
,而您错过了它,这就是您收到此错误的原因。
我认为问题出在您的 routes/web.php 文件中
您必须将一个参数传递给 destroy 方法
例如:
Route::get('delete_category/{id}', 'CategoryController@destroy');
你的调用 URL 看起来像 http://127.0.0.1:8000/delete_category/1
这里1将作为id
变量
的值
您有一处错别字,需要修改
public function destroy($id)
{
$category = Category::findOrFail($id);
$category->delete(); //type mistake
return redirect('/admin.category'); // it seems like route name
}
更好的代码
public function destroy($id)
{
$category = Category::findOrFail($id);
if($category) {
$category->delete();
return redirect()->route('admin.category' ,['error' => $error]);
}
return redirect()->route('admin.category');
}
就我而言,我忘记了 "Request" class 的名称。
正确的参数定义。
public function displayId(Request $Visitor){
return $Visitor->id;
}
参数定义错误。
public function displayId($Visitor){
return $Visitor->id;
}
解决方案:php artisan route:cache 在终端上工作。
我用那条线,它奏效了。首先你检查 php artisan route:list 如果你没有在列表中看到 destroy/{id} ,你应该运行那个命令。为清楚起见,您的路线没有看到 {id},但是当您执行命令时,web.php 中的路线路径会自行更新
我不能通过id删除它
我这里也有一些模型代码
class Category extends Model
{
// Table Name
protected $table = 'categories';
// Primary Key
public $primaryKey = 'id';
// TimeStamps
public $timestamps = true;
protected $fillable= ['name','icon'];
public function getAllCategory(){
return DB::table(categories)->get();
}
public function createCategory($name,$icon){
$category= $this->create([
'name' => $name,
'icon' => $icon,
]);
return $category;
}
}
//控制器中有一个函数:
public function destroy($id)
{
$category = Category::findOrFail($id);
$category->delele();
return redirect('/admin.category');
}
问题出在您看来的某个地方。例如,您有路线 category.destroy
,但您需要在创建 link 时传递要销毁的模型的 id
,而您错过了它,这就是您收到此错误的原因。
我认为问题出在您的 routes/web.php 文件中 您必须将一个参数传递给 destroy 方法 例如:
Route::get('delete_category/{id}', 'CategoryController@destroy');
你的调用 URL 看起来像 http://127.0.0.1:8000/delete_category/1
这里1将作为id
变量
您有一处错别字,需要修改
public function destroy($id)
{
$category = Category::findOrFail($id);
$category->delete(); //type mistake
return redirect('/admin.category'); // it seems like route name
}
更好的代码
public function destroy($id)
{
$category = Category::findOrFail($id);
if($category) {
$category->delete();
return redirect()->route('admin.category' ,['error' => $error]);
}
return redirect()->route('admin.category');
}
就我而言,我忘记了 "Request" class 的名称。
正确的参数定义。
public function displayId(Request $Visitor){
return $Visitor->id;
}
参数定义错误。
public function displayId($Visitor){
return $Visitor->id;
}
解决方案:php artisan route:cache 在终端上工作。 我用那条线,它奏效了。首先你检查 php artisan route:list 如果你没有在列表中看到 destroy/{id} ,你应该运行那个命令。为清楚起见,您的路线没有看到 {id},但是当您执行命令时,web.php 中的路线路径会自行更新