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 關注
- 188 瀏覽
添加回答
舉報