2 回答
TA贡献2036条经验 获得超8个赞
第一: 提取关键词:
$delimeter = ' '; //or your separator
$keywords = explode($delimeter, $search); // Will return an array containing each keyword
然后:循环每个关键字并调用您的搜索查询或动态扩展您的查询
示例 像这样的东西应该可以工作......
$base_query = DB::table('product')
->select('product.id','product.title','product.description','product.content','product.photo','product.quantity','product.price')
->join('product_per_category','product_per_category.product_id','=','product.id')
->where(['product.deleted' => 0])
->where(['product_per_category.deleted' => 0])
->where(['product_per_category.productcategory_id' => $id]);
foreach($keywords as $keyword){
$base_query->where(function($query) use ($keyword){
$query->where('product.content', 'like', '%' . $keyword . '%')
->orWhere('product.title', 'like', '%' . $keyword . '%')
->orWhere('product.quantity', 'like', '%' . $keyword . '%')
->orWhere('product.price', 'like', '%' . $keyword . '%');
})
}
$result = $base_query->get();
您将需要执行循环,因为您不知道搜索结果中的关键字数量
TA贡献1874条经验 获得超12个赞
你可以像这样使用explode PHP函数:
$keywords = explode(' ', $keyword); // Will return an array containing each keyword
dd($keywords);
如果您的关键字可以包含空格,您可能应该考虑使用其他分隔符或拆分查询参数。
- 2 回答
- 0 关注
- 135 浏览
添加回答
举报