[英]Laravel/Lumen api filter
recently I'am trying to make my api filtering work. 最近,我正在尝试使我的api过滤工作。 I need to filter my products like this:
http://localhost/search?feature_id=1,2,3,4,5...
我需要这样过滤我的产品:
http://localhost/search?feature_id=1,2,3,4,5...
Everything is fine if I'm sending only 1 id. 如果我只发送1个ID,一切都很好。 But how to make it work in this way?
但是如何使其以这种方式工作?
This is my controller: 这是我的控制器:
public function search2(\Illuminate\Http\Request $request) {
$query = DB::table('tlt_product_features');
if ($request->has('feature_id') ) {
$query = $query->whereIn('feature_id', [$request->get('feature_id')]);
}
$products = $query->get();
return response()->json([
'products' =>$products
]);
}
To get an array out of the box on the Laravel / Lumen side, you have to send the array this way : 要在Laravel / Lumen一侧开箱即用,必须以这种方式发送阵列:
http://localhost/search?feature_id[]=1&feature_id[]=2&feature_id[]=3...
In a weak typed languages like PHP, the [] is actually being used as an internal work around in order to be able to get multi valued parameters. 在像PHP这样的弱类型语言中,[]实际上被用作内部变通方法,以便能够获取多值参数。 You could also specify an index :
您还可以指定一个索引:
http://localhost/search?feature_id[0]=1&feature_id[1]=2&feature_id[2]=3...
You could then use in you controller : 然后,您可以在控制器中使用:
if ($request->filled('feature_id')) {
// You could also check that you have a php array : && is_array($request->input('feature_id'))
// And that it's not an empty array : && count($request->input('feature_id'))
$query = $query->whereIn('feature_id', $request->input('feature_id'));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.