我是PhP的新手。我从其他团队成员那里得到了一个代码,只是想做一个小的更改。
代码是从DB中获取项目列表。它使用"where"子句将行业参数和sql查询中的行业输入参数进行比较。此代码运行良好。我只想将"="替换为query->where子句的"LIKE"比较。
这是当前使用"="的代码,可用于
public function feed($industry=null){
$query = DB::table('startups as s')
->leftjoin('founders as fd','fd.startup_id','=','s.id');
if($industry)
$query->where('s.industry','=',$industry);
$result = $query->select('s.id as sid','fd.name as fdname','fd.email','fd.contact','s.*','s.created_at',DB::raw("(select sum(f.fund_amount) from funds as f where f.startup_id=s.id and f.fund_amount>0)as 'total'"))
->groupBy('s.id')
->get();
return json_encode($result);
},
以下是我多次尝试用LIKE替换"="的一次(但到目前为止,没有任何选项起作用-看起来很简单,但在PhP中也没有起作用,所以我错过了一些东西)
public function feed($industry=null){
$industryFilter = "%{$industry}%";
$query = DB::table('startups as s')
->leftjoin('founders as fd','fd.startup_id','=','s.id');
if($industry)
$query->where('s.industry','LIKE',$industryFilter);
$result = $query->select('s.id as sid','fd.name as fdname','fd.email','fd.contact','s.*','s.created_at',DB::raw("(select sum(f.fund_amount) from funds as f where f.startup_id=s.id and f.fund_amount>0)as 'total'"))
->groupBy('s.id')
->get();
return json_encode($result);
},
看起来您已经正确地修改了where子句,但只需尝试一下:
public function feed($industry=null){
$query = DB::table('startups as s')
->leftjoin('founders as fd','fd.startup_id','=','s.id');
if( $industry ){
$query->where('s.industry','LIKE', '%'.$industry.'%');
}
$result = $query->select('s.id as sid','fd.name as fdname','fd.email','fd.contact','s.*','s.created_at',DB::raw("(select sum(f.fund_amount) from funds as f where f.startup_id=s.id and f.fund_amount > 0)as 'total'"))
->groupBy('s.id')
->get();
return json_encode($result);
}
希望这能起作用并帮助