2017-04-08 87 views
0

我有一个带有两个表的数据库:table CATEGORIES有一个id,它是表PRODUCTS的fk。 当我想删除一个类别,并且表格产品中的记录与该类别ID相关联时,laravel返回405错误,我无法访问销毁方法。我如何避免405错误和访问销毁方法?Laravel 5.2 - 方法DELETE不允许(错误405)

这里是我的路由配置:

$api = app('Dingo\Api\Routing\Router'); 

$api->version('v1',['middleware' => ['api']], function($api){ 

    $api->resource('categories', 'App\Http\Controllers\CategoriesController'); 
    $api->resource('products', 'App\Http\Controllers\ProductsController'); 
    $api->get('categories/{id}/products', 'App\Http\Controllers\[email protected]'); 

}); 

编辑

如果该类别不与任何产品相关,删除方法,所以我想它不会引发任何错误是不是一个路由问题

回答

1

如果路由存在但不是该方法,则Laravel仅返回HTTP 405。我并不完全熟悉Dingo,但运行php artisan route:list来检查您尝试使用的路由是否已注册DELETE请求。

+0

对于dingo api我已经使用它的命令来显示所有路由,并且该方法在列表中,所以我猜这不是注册问题 –

+0

当你调用它时,你是否满足路由要求,可能是缺少'v1'版本控制(但是你已经实现了)或者失败了'api'中间件? – Dwight

+0

我不认为我错过了一些路由需求,因为正如我在编辑部分中所写的那样,如果我想要删除的类别在没有任何产品的情况下没有关联,我调用的方法会按预期执行其行为。但是,我注意到,当我传递一个单一的ID的数组传递时,我得到了问题:如果我传递一个单一的ID方法工作如预期,但如果我发送一个完整的ID数组删除我得到405错误。这听起来很奇怪。 (对不起我的英文,我不是英文,所以我写我可以) –