如何在Laravel DB:raw中使用count()WHERE IN

时间:2019-02-18 17:38:17

标签: mysql laravel

如何在Laravel DB:raw

中使用count()
$report=`societyReport`::select('society_reports.id','society_reports.body','society_reports.created_at',DB::raw("count(votes.vote) as count WHERE vote = 1"))
        ->`leftjoin`('votes', 'votes.society_reports_id','=','society_reports.id')
        ->`groupBy`('society_reports.id')
        ->`orderBy`('society_reports.id', 'DESC')
        ->paginate(10);   
  

SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有一个错误;请参见语法。请查看与您的MySQL服务器版本相对应的手册,以在'Where表决= 1

附近使用正确的语法

1 个答案:

答案 0 :(得分:1)

有关此结构的更正,请参见:

$report= SocietyReport::leftjoin('votes', 'votes.society_reports_id','=','society_reports.id')
        ->groupBy('society_reports.id')
        ->orderBy('society_reports.id', 'DESC')
        ->select(
          'society_reports.id',
          'society_reports.body',
          'society_reports.created_at',
          \DB::raw("count(votes.vote) as count")
        )
        ->where('vote', 1)
        ->paginate(10);

问题是select()用于选择列或聚合值。如果要添加where子句,则需要执行->where()