在laravel中,我可以在资源控制器中写这个来响应获取请求(让我们说资源是产品):
public function index(Request $request)
{
// Handles requests such as ".../api/products?user_id=5&price=500"
$products = Product::where($request->toArray())->get();
return response($products);
}
这适用于使用&#34; =&#34;的请求,例如在示例中。但是,如果我们不想搜索价格= 500,但可能价格<= 500或价格&gt; 500.对此最好的Laravel(和RESTful)方法是什么?
注意:Laravel 5.2
答案 0 :(得分:1)
你可以这样做。
public function index(Request $request)
{
// Handles requests such as ".../api/products?user_id=5&price=500"
$products = Product::where('user_id', $request->user_id)->where('price', '<=', intval($request->price))->get();
return response()->json($products);
}
或强>
public function index(Request $request)
{
// Handles requests such as ".../api/products?user_id=5&price=500"
$products = Product::whereRaw("user_id=? and price<=?", [$request->user_id, $request->price])->get();
return response()->json($products);
}
在@Joel Hinz评论后编辑:
如果您还想传递查询的运算符,可以向网址添加新参数,例如
/api/products?user_id=5&price=500&op=1
然后切换控制器中的数字。
public function index(Request $request)
{
// Handles requests such as ".../api/products?user_id=5&price=500&op=1"
switch(intval($request->op)){
case 1:
$op = "<=";
break;
case 2:
$op = ">";
break;
//and so on
default:
return response()->json("Wrong parameters");
break;
}
$products = Product::whereRaw("user_id = ? and price $op ?", [$request->user_id, $request->price])->get();
return response()->json($products);
}