3 回答
TA贡献1966条经验 获得超4个赞
改变了获取数据的方法,
$products = Product::all();
if (!empty($request->keywords)) { // if keywords not empty
$keyword = $request->keywords;
$products = Product::whereHas('categories', function ($q) use ($keyword) {
$q->whereIn('title', $keyword); // where in for array
})->get(); // it won't override old data as there is no loop
}
return response()->json($products);
TA贡献1805条经验 获得超10个赞
我正在改进其他人的答案。下面是过滤后的代码
$builder = new Product;
if($request->filled('keywords')) { // if keywords key has any value then query will execute.
$builder = $builder->whereHas('categories', function($q) use ($request){
$q->whereIn('title', array_values($request->keywords));
});
}
$items = $builder->get();
dd($items);
你可以试试这个。
TA贡献1821条经验 获得超4个赞
您可以whereIn通过传入关键字来简单地在标题字段上使用。
$products = Product::all();
$titles = [];
foreach($request->keywords as $keyword) {
$titles[] = $keyword;
}
$products = Product::whereHas('categories', function($q) use ($keyword){
$q->whereIn('title', $titles);
})->get();
- 3 回答
- 0 关注
- 226 浏览
添加回答
举报