我的控制器中有搜索查询
public function byQuery($query)
{
$q = $this->prepareQuery($query);
if(str_contains($q,'zealand'))
{
$q = 'nz';
}
$titles = Title::where('suburb', 'LIKE', $q)
->orWhere('postcode', 'LIKE', $q)
->orWhere('title', 'LIKE', $q)
->orWhere('country', 'LIKE', $q)
->orWhere('state', 'LIKE', $q);
if (isset($input['type']) && $input['type'] != '')
{
$titles = $titles->where('type', 'like', '%'. $input['type'].'%');
}
$titles = $titles->orderBy('href', 'ASC')
->orderBy(DB::raw('RAND()'))
->paginate(36);
return $titles;
}
如果我搜索
之类的搜索search?q=new zealand
它将返回我的数据库中与新西兰相匹配的所有结果
如果我搜索
search?q=new zealand&type=sold
我想要从我的DB中返回与新西兰相匹配的所有结果,并且该类型已售出。
到目前为止它还没有用。它只返回我的数据库中的所有结果,并不仅限于销售结果。
答案 0 :(得分:2)
$input
未定义(至少,我不会在您发布的代码中看到它),因此isset()
将始终返回false
。使用Input类,它已经可以进行检查:
if (Input::has('type'))
{
$titles = $titles->where('type', 'like', '%'. rawurldecode(Input::get('type')).'%');
}
注意:我添加了一个rawurldecode()
,因为您的例子来自新西兰'将被传递为新西兰'如果您希望它正确匹配,则需要考虑这一点。