我在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
答案 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
类实例