PhP中的简单数据库查询代码问题


Issue with simple data base query code in PhP

我是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);        
}

希望这能起作用并帮助