Laravel不支持的get方法

时间:2019-04-18 09:41:29

标签: php laravel

我在Laravel的数据库中获取一些信息时遇到一些问题。我正在尝试使用where方法并指定所需的ID,但是我总是会遇到类似的错误

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException: The GET method is not supported for this route. Supported methods: POST.

这是代码 控制器

public function select_category($category_id){
        $products = Products::where('category_id', $category_id)->get();

        return $products;
    }

Api

Route::get('products/{category_id}', 'ProductsController@select_category');

当我删除$category_id及其位置时,只有Products::all();可以正常工作,但需要指定搜索位置。

链接我如何指定$ category_id为http://localhost:8000/api/products/?category_id=16

4 个答案:

答案 0 :(得分:0)

日志表明存在路由错误,与您的口才模型无关

检查您是否有与该路线冲突的另一条路线


编辑:看到您的URL后,您应该使用“ http://localhost:8000/api/products/16”而不是“ http://localhost:8000/api/products/?category_id=16

第二种方法尝试访问您的发布路线“ Route :: post('products'...”,因为对于Laravel,“?”之后的所有内容都是参数,并且不在路由检测中使用

答案 1 :(得分:0)

请确保在您的路由文件中,在此路由的定义下方,您没有为post方法设置类似的端点。因此,您最可能拥有:

Route::post('products/something', 'ProductsController@store');

这将覆盖先前定义的一个。

为防止这种情况,您可以修改当前的路由:

Route::get('products/{category_id}', 'ProductsController@select_category')->where('category_id', '[0-9]+');

答案 2 :(得分:0)

更改您的URL:

http://localhost:8000/api/products/16

还更改了视图文件:

<a href="{{ URL::to('products/'. $yourchategoryid ) }}">product</a>

答案 3 :(得分:0)

我认为应该是

 public function select_category(Request $request, $category_id){
        $products = Products::where('category_id', $category_id)->get();

        return $products;
    }

如果url是

http://localhost:8000/api/products/16

如果网址是

http://localhost:8000/api/products/?category_id=16

功能应该

public function select_category(Request $request){
            $products = Products::where('category_id', $request->input('category_id'))->get();

        return $products;
    }

该函数的第一个参数应为Request类实例