【发布时间】:2020-12-29 16:20:02
【问题描述】:
我正在尝试根据选定的过滤器和可能的搜索词/词来过滤我的产品。我的过滤器与类别有关,而类别又与我的产品有关。我下面的代码仅在所有内容都链接在一起时才有效(没有 if 语句检查搜索词/单词),但是当我尝试将查询分成多行时(我读过这是可能的,对吗?)它返回一个空数组。
这是我的代码:
// Create array from selected categories/filters
$filter_ids = explode(',', $request->get('cats'));
// Query for active products
$products = Product::where('active', '=', 1);
$products->with(['categories' => function($query) use ($filter_ids) {
// Query for active categories
$query->where('active', 1)->whereHas('filters', function ($query) use ($filter_ids) {
// Query for the selected filters from the request
$query->whereIn('id', $filter_ids);
});
}]);
// Check for search term/word
if ($request->get('q')) {
$q = $request->get('q') ? urldecode($request->get('q')) : null;
$products->where('title', 'LIKE', "%{$q}%");
}
// Limit to 10 items and get results
$products->limit(10)->get();
return response()->json([
'status' => 'success',
'response' => $products
], 200);
【问题讨论】: