laravel 开发中可能遇到laravel object not found 错误,实际是路由冲突导致的,
Route::delete('charactervoicework/batch', 'CharacterVoiceWorkController@batchDelete'); Route::delete('charactervoicework/{id}', 'CharacterVoiceWorkController@destroy');
会报错,
默认情况下,laravel
的路由匹是从上往下的,匹配到符合的第一条后,就不会往下匹配了,
所以越是具体的路由,应该放到上边,带有参数的(比如user/{id})应该放到下边。
解决办法:
第一种方法:对调一下位置。
第二种方法:route 后面加限制,加一个正则表达式限制就好了:
Route::delete('charactervoicework/batch', 'CharacterVoiceWorkController@batchDelete'); Route::delete('charactervoicework/{id}', 'CharacterVoiceWorkController@destroy')->where('id', '[0-9]+');
最后如果同时也有用到resource ,要把resource 可能的遇到的情况列出来,找出可冲突。
Route::resource('users', 'UsersController');
上面代码将等同于:
Route::get('/users', 'UsersController@index')->name('users.index');
Route::get('/users/{user}', 'UsersController@show')->name('users.show');
Route::get('/users/create', 'UsersController@create')->name('users.create');
Route::post('/users', 'UsersController@store')->name('users.store');
Route::get('/users/{user}/edit', 'UsersController@edit')->name('users.edit');
Route::patch('/users/{user}', 'UsersController@update')->name('users.update');
Route::delete('/users/{user}', 'UsersController@destroy')->name('users.destroy');