【发布时间】:2017-03-15 15:36:38
【问题描述】:
我变得非常困惑,我试图通过 laravel 查询生成器运行查询,它应该可以工作,但它会抛出奇怪的错误。
我正在尝试在日期范围之间计算状态为“Won”的提示表中的记录,然后在 user_id 上加入用户表以检索用户名。
这是我的查询生成器
$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: select count(status) as wincount, users.name from
tipsinner join @987654325 @ onusers.id=tips.user_id其中tips.created_at在 2016-11-01 00:00:00 和 2016-11-02 10:39:02 和 @987654332 之间@ = 由users.id赢得组@wincountdesc)
但如果我运行确切的查询,错误已输出到 PHPMyAdmin 中的 SQL 控制台,查询运行良好并返回我需要的结果。
我错过了什么吗?我对 Laravel 比较陌生,我很困惑它仍然会抛出错误。
【问题讨论】:
-
您能否发布您正在比较的两个 SQL 查询?
-
加入后可以使用addSelect laravel.com/docs/5.3/queries#selects
-
我试图运行的查询是这个 select count(status) as wincount, users.name from
tipsinner joinusersonusers.id=tips.user_id其中tips.created_at在 '2016-11-01 00:00:00' 和 '2016-11-02 10:39:02' 和status= 'Won' group by @987654345 @.id订购wincountdesc -
如果在 select 中添加 users.id 会怎样?
标签: php mysql laravel eloquent