【问题标题】:Too few arguments to function App\Http\Controllers\CategoryController::destroy(), 0 passed and exactly 1 expected函数 App\Http\Controllers\CategoryController::destroy() 的参数太少,通过了 0,预期正好 1
【发布时间】:2019-10-29 23:33:54
【问题描述】:

我无法通过 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');

}

【问题讨论】:

  • delelet()delete()?也请发布您的路线
  • 是的,在控制器的destroy 方法中,您输入了delele 而不是delete
  • 你是怎么调用destroy方法的?你能分享你的路线/web.php 吗?

标签: laravel laravel-5 laravel-routing


【解决方案1】:

我认为问题出在您的 routes/web.php 文件中 您必须将一个参数传递给 destroy 方法 例如:

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

您的调用 URL 将类似于 http://127.0.0.1:8000/delete_category/1 这里 1 将作为 id 变量的值

【讨论】:

    【解决方案2】:

    问题出在您的视野中。您有例如category.destroy 的路线,但您需要在创建链接时传递要销毁的模型的id,而您错过了它,这就是您收到此错误的原因。

    【讨论】:

      【解决方案3】:

      您有一个拼写错误,需要进行一些更改

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

      【讨论】:

        【解决方案4】:

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

        正确的参数定义。

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

        参数定义错误。

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 能否请您将整个代码 sn-p 与您的线路一起发布,以便可以看到线路应该在哪里?
          • @Olov 我已经解释过了。如果它不起作用,我分享我的代码
          猜你喜欢
          • 2020-12-11
          • 2020-04-22
          • 2019-07-06
          • 2020-11-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多