如何在 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 8 - MS SQL - 查询生成器 - 使用 DB Raw。尝试使代码正确,使其像工作的 MSSQL 代码一样工作