流明 API 花式过滤
Lumen API fancy filtering
如何使用查询生成器在 Lumen API 中进行精美的过滤?例如,我想像这样过滤我的产品:http://localhost:8000/products?product_group=network
这是我的控制器:
public function index(){
$tlt_product_groups = DB::table('tlt_products')->groupBy('product_group')->get()->toArray();
$tlt_products = DB::table('tlt_products')->get()->groupBy('product_group')->toArray();
return response()->json([
'categories'=> $tlt_product_groups,
'products' =>$tlt_products
]);
}
这是我的路线:
$router->get('products','ProductController@index');
在查询没有调用get()
之前,它仍然是一个查询对象,可以进一步转换。您不必将整个查询写成一个片段。因此,您应该能够执行以下操作:
public function index(\Illuminate\Http\Request $request) {
$query = DB::table('tlt_products');
if ($request->has('product_group')) {
$query = $query->where('product_group', $request->get('product_group'));
}
$products = $query->get();
return response()->json([
'categories'=> $tlt_product_groups,
'products' =>$tlt_products,
]);
}
如果你想扩展你的过滤,你也可以允许在多个列上进行过滤,而不必为每个新列再次编写代码:
public function index(\Illuminate\Http\Request $request) {
$filterColumns = ['product_group', 'price', 'manufaturer'];
$query = DB::table('tlt_products');
foreach ($filterColumns as $column) {
if ($request->has($column)) {
$query = $query->where('product_group', $request->get($column));
}
}
$products = $query->get();
return response()->json([
'categories'=> $tlt_product_groups,
'products' =>$tlt_products,
]);
}
如何使用查询生成器在 Lumen API 中进行精美的过滤?例如,我想像这样过滤我的产品:http://localhost:8000/products?product_group=network
这是我的控制器:
public function index(){
$tlt_product_groups = DB::table('tlt_products')->groupBy('product_group')->get()->toArray();
$tlt_products = DB::table('tlt_products')->get()->groupBy('product_group')->toArray();
return response()->json([
'categories'=> $tlt_product_groups,
'products' =>$tlt_products
]);
}
这是我的路线:
$router->get('products','ProductController@index');
在查询没有调用get()
之前,它仍然是一个查询对象,可以进一步转换。您不必将整个查询写成一个片段。因此,您应该能够执行以下操作:
public function index(\Illuminate\Http\Request $request) {
$query = DB::table('tlt_products');
if ($request->has('product_group')) {
$query = $query->where('product_group', $request->get('product_group'));
}
$products = $query->get();
return response()->json([
'categories'=> $tlt_product_groups,
'products' =>$tlt_products,
]);
}
如果你想扩展你的过滤,你也可以允许在多个列上进行过滤,而不必为每个新列再次编写代码:
public function index(\Illuminate\Http\Request $request) {
$filterColumns = ['product_group', 'price', 'manufaturer'];
$query = DB::table('tlt_products');
foreach ($filterColumns as $column) {
if ($request->has($column)) {
$query = $query->where('product_group', $request->get($column));
}
}
$products = $query->get();
return response()->json([
'categories'=> $tlt_product_groups,
'products' =>$tlt_products,
]);
}