首页 > 解决方案 > 如何在 laravel DB:raw 中使用 count() WHERE IN

问题描述

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

$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 vote = 1 附近使用正确的语法

标签: mysqllaravel

解决方案


请参阅此以更正您的结构:

$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()


推荐阅读