函数 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 中的路线路径会自行更新