函数App \ Http \ Controllers \ CategoryController :: destroy()的参数太少,传递了0个且恰好期望1个

时间:2019-06-15 18:49:13

标签: laravel laravel-5 laravel-routing

我无法通过ID删除它

我在这里也有一些用于Model的代码

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');

}

5 个答案:

答案 0 :(得分:0)

问题出在您看来。例如,您有路线category.destroy,但是在创建链接时需要传递要销毁的模型的id,而错过它,这就是为什么会出现此错误的原因。

答案 1 :(得分:0)

我认为问题出在您的route / web.php文件中 您必须传递一个参数来销毁方法 例如:

Route::get('delete_category/{id}', 'CategoryController@destroy');

您的调用URL看起来像http://127.0.0.1:8000/delete_category/1 这里1将作为id变量的值

答案 2 :(得分:0)

您遇到一个错字错误,需要进行一些更改

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');
}

答案 3 :(得分:0)

就我而言,我忘记了“ Request”类的名称。

正确的参数定义。

public function displayId(Request $Visitor){
return $Visitor->id;
}

错误的参数定义。

public function displayId($Visitor){
return $Visitor->id;
}

答案 4 :(得分:-2)

解决方案:php artisan route:cache 在终端上工作。 我使用那条线并且它起作用了。首先,您检查 php artisan route:list,如果在列表中没有看到 destroy/{id},则应该使用该命令。为了清楚说明您的路线没有看到 {id} 但是当您执行命令时,web.php 中的路线路径会自行更新