查询在phpMyAdmin中有效,但在Laravel中无效

时间:2018-08-31 06:22:08

标签: php laravel

如果我在phpmyadmin中编写以下查询,它将运行并返回正确的结果

select `u`.*, count(t.empid) as totalassignedtask from `users` as `u` left join `tasks` as `t` on `t`.`empid` = `u`.`id` where `u`.`role` = 'user' group by `t`.`empid`

但是,如果我这样在laravel中编写此查询

$allemp = DB::table('users as u')
                        ->leftJoin('tasks as t','t.empid','=','u.id')
                        ->where('u.role','=','user')
                        ->select('u.*',DB::raw('count(t.empid) as totalassignedtask'))
                        ->groupBy('t.empid')
                        ->get();

我得到一个错误:

  

Illuminate \ Database \ QueryException(42000)
  SQLSTATE [42000]:语法错误或访问冲突:1055'employee.u.id'不在GROUP BY中(SQL:选择u。*,count(t.empid)作为{{1}中的totalassignedtask }(以tasks的身分在t上以users的身分加入ut = empidu其中idu = role的用户组。t

3 个答案:

答案 0 :(得分:1)

在config / database.php中,“ mysql”更改为:

'strict' => true,

为假。 希望对您有帮助!

答案 1 :(得分:1)

这可能是SQL_MODE问题。

在您的config / database.php中,在连接中,更改mysql

strict => false

答案 2 :(得分:0)

感谢您的回答-我更改了代码中的列名,并且可以使用

$allemp = DB::table('users as u')
                        ->join('tasks as t','t.empid','=','u.id')
                        ->where('u.role','=','user')
                        ->select('u.id','u.name','u.email',DB::raw('count(t.empid) as totalassignedtask'))
                        ->groupBy('u.id','u.name','u.email')
                        ->orderBy('totalassignedtask', 'asc')
                        ->get();