首页 文章

查询适用于phpMyAdmin,但不适用于Laravel [重复]

提问于
浏览
0

这个问题在这里已有答案:

如果我在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:select u . *,count(t.empid)as totalassignedtask从任务开始加入用户作为你在t.empid = u.id,其中u.role =用户组由t.empid)

3 回答

  • 0

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

    'strict' => true,
    

    为假 . 希望能帮助到你!

  • 1

    这可能是SQL_MODE问题 .

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

    strict => false
    
  • 1

    谢谢你的回答 - 我在代码中更改了列名,它确实有效

    $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();
    

相关问题