Laravel Query构建器 - 查询不起作用但在SQL控制台中工作

时间:2016-11-02 10:45:10

标签: php mysql laravel eloquent

我变得非常困惑我试图通过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.name usersid = {{ 1}}。tips其中user_idtips介于2016-11-01 00:00:00和2016-11-02 10:39:02之间created_at =通过status获得分组。usersid desc排序

但如果我运行确切的查询错误已输出到PHPMyAdmin中的SQL控制台,则查询运行正常并返回我需要的结果。

我错过了什么吗?我对Laravel来说相对较新,而且我很大程度上混淆了它是如何抛出错误的。

1 个答案:

答案 0 :(得分:4)

好的,事实证明你可以在/app/database.php中转换SQL严格模式,这样可以防止错误发生。

'严格' =>假,