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

Posted

技术标签:

【中文标题】如何在 laravel DB:raw 中使用 count() WHERE IN【英文标题】:How to use count() WHERE IN in laravel DB:raw 【发布时间】:2019-07-12 03:39:35 【问题描述】:

如何在Laravel DB: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

附近使用正确的语法

【问题讨论】:

【参考方案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()

【讨论】:

以上是关于如何在 laravel DB:raw 中使用 count() WHERE IN的主要内容,如果未能解决你的问题,请参考以下文章

laravel 的DB::raw() 语法使用

Laravel DB::raw 复制

Laravel 4 无法运行整个 RAW 查询

Laravel详解DB::raw() 用法

Laravel DB::raw 绑定参数

Laravel 8 - MS SQL - 查询生成器 - 使用 DB Raw。尝试使代码正确,使其像工作的 MSSQL 代码一样工作