【发布时间】:2018-08-10 07:04:07
【问题描述】:
使用 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();
【问题讨论】:
-
SQL LIKE 运算符怎么样??w3schools.com/sql/sql_like.asp
-
那么我应该把 LIKE 放在哪里呢? MATCH () 反对 () LIKE MATCH () 反对()?
-
whereRaw("name,description LIKE '$searchItem'.'%' OR location LIKE '$searchLocation'.'%' ")->where('status','')->get ();
-
SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以了解正确的语法使用
-
我已经发布了答案,请尝试一下。如果您需要任何帮助,请告诉我。