使用laravel,这是我的控制器文件中的一些代码:
public function postsearch(Request $request){
$searchItem=$request['searchItem'];
$searchLocation=$request['searchLocation'];
$criteria=$request['criteria'];
if($criteria == 'schools'){
$result=schools::whereRaw("MATCH(name,describtion) AGAINST('$searchItem') AND MATCH(location) AGAINST('$searchLocation')")->where('status','')->get();
if(count($result)>0){
$count=count($result);
return view('schools', array('result' => $result))->with(array('searchItem'=>$searchItem,'searchLocation'=>$searchLocation,'criteria'=>$criteria,'count'=>$count))->with('searchItem',$searchItem);
}
else{
return view('schools')->with(array('msg'=>'Oops, No result found','count'=>'0','searchItem'=>$searchItem,'searchLocation'=>$searchLocation,'criteria'=>$criteria));
}
}
这是我尝试编辑的代码:
$result=schools::whereRaw("MATCH(name,describtion) AGAINST('$searchItem') AND MATCH(location) AGAINST('$searchLocation')")->where('status','')->get();
如果我正在尝试搜索学校,但我只是输入学校名称而不是位置,我得到0结果。我必须把学校所在的位置放进去。但是我想这样做,以便网站在每个地方显示学校,如果该人不知道该位置。现在,我必须放入学校的位置,以便在结果中显示。
其次,如果学校名称是"佛罗里达州立大学(FSU)",我将不得不输入"佛罗里达州立大学"让学院出现。 "佛罗里达"或者" FSU"不行。有没有办法解决它,以便如果搜索查询与名称的任何部分匹配,数据库中的项目会显示?
更新
不得不花几块钱买一个有效的代码:
$result=schools::where('<put the variable you are searching for here>', 'LIKE', '%'.$searchItem.'%')
->where('location', 'LIKE', '%'.$searchLocation.'%')
->where('status','')->orderBy('name', 'asc')->get();
答案 0 :(得分:0)
试试这个:
$result=schools::whereRaw("MATCH(name,describtion) AGAINST('$searchItem') OR MATCH(location) AGAINST('$searchLocation')")->where('status','')->get();
答案 1 :(得分:0)
$result=schools::whereRaw("MATCH(name,describtion)
AGAINST('$searchItem') AND MATCH(location)
AGAINST('$searchLocation')")->where('status','')->get();
替换为
$result = schools::where(function ($q) use ($searchItem, $searchLocation)
{
return $q->where('name', 'LIKE',
$searchItem. '%')
->orWhere('description', 'LIKE', '%' .
$searchItem. '%');
->orWhere('location', 'LIKE', '%' .
$searchLocation. '%');
});
$result->where('status','')->get();
答案 2 :(得分:0)
你可以改变这个
$result=schools::whereRaw("MATCH(name,describtion)
AGAINST('$searchItem') AND MATCH(location)
AGAINST('$searchLocation')")->where('status','')->get();
到
$result=schools::where('name', 'LIKE', '%'.$searchItem.'%')
->orWhere('describtion', 'LIKE', '%'.$searchItem.'%')
->orWhere('location', 'LIKE', '%'.$searchLocation.'%')
->where('status','')->get();
我也注意到你已经写过&#39;描述&#39;。你确定它没有描述吗?还有为什么要检查空字符串的状态?