你可以这样做。
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);
}
或者:@Joel欣茨评论后
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);
}
编辑:
如果您还想传递查询的操作符,你可以添加一个新的参数到网址,例如
/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);
}
我想OP也想从查询字符串中获取运算符。 –
是的,也许你是对的 –
嗯是的,事情是,我当然可以做到这一点,并有额外的参数,如'maxprice'和'minprice'等。但是,应该有一个更好的解决方案,对吧?我的意思是,这就是你一直在做的事 - 请求资源并设置不同的参数。似乎有很多工作需要随时为max和min定制参数。 $ request-> toArray()的美妙之处在于我甚至不需要指定参数。 – Myone