我正在尝试为用户创建一种搜索网站上所有产品的方法。当他们搜索“burton 滑雪板”时,我只希望带有 burton 品牌的滑雪板出现在结果中。但如果他们只搜索“burton”,那么所有带有 burton 品牌的产品都应该出现。
这是我试图写的,但由于多种原因无法正常工作。
控制器:
public function search(){
$input = Input::all();
$v= Validator::make($input, Product::$rules);
if($v->passes())
{
$searchTerms = explode(' ', $input);
$searchTermBits = array();
foreach ($searchTerms as $term) {
$term = trim($term);
if (!empty($term)){
$searchTermBits[] = "search LIKE '%$term%'";
}
}
$result = DB::table('products')
->select('*')
->whereRaw(". implode(' AND ', $searchTermBits) . ")
->get();
return View::make('layouts/search', compact('result'));
}
return Redirect::route('/');
}
我正在尝试重新创建针对此stackoverflow.com 问题的第一个解决方案
我发现的第一个问题是我试图爆炸$input
,但它已经是一个数组。所以我不确定如何解决这个问题。而且我写的方式->whereRaw(". implode(' AND ', $searchTermBits) . ")
,我肯定是不正确的。我不确定如何解决这些问题,任何见解或解决方案将不胜感激。