我变得非常困惑我试图通过laravels查询构建器运行查询,该查询构建器应该可以工作,但它会抛出奇怪的错误。
我试图从提示表中计算状态为“胜利”的记录。在daterange之间然后加入user_id上的users表以检索用户的用户名。
这是我的查询构建器
$topfiveTipsters = DB::table('tips')
->select(DB::raw('count(status) as wincount, users.name'))
->join('users', 'users.id', '=', 'tips.user_id')
->whereBetween('tips.created_at',[$start,$end])
->where('status','Won')
->groupBy('users.id')
->orderBy('wincount', 'desc')
->get();
然而它会抛出错误
QLSTATE [42000]:语法错误或访问冲突:1055' digthetip.users.name'不在GROUP BY中(SQL:选择计数(状态)为wincount,来自
tips
内部加入users
的users.nameusers
。id
= {{ 1}}。tips
其中user_id
。tips
介于2016-11-01 00:00:00和2016-11-02 10:39:02之间created_at
=通过status
获得分组。users
按id
desc排序
但如果我运行确切的查询错误已输出到PHPMyAdmin中的SQL控制台,则查询运行正常并返回我需要的结果。
我错过了什么吗?我对Laravel来说相对较新,而且我很大程度上混淆了它是如何抛出错误的。
答案 0 :(得分:4)
好的,事实证明你可以在/app/database.php中转换SQL严格模式,这样可以防止错误发生。
'严格' =>假,