Php 在laravel 5.3中执行原始查询

Php 在laravel 5.3中执行原始查询,php,mysql,laravel,laravel-5.3,Php,Mysql,Laravel,Laravel 5.3,我试图在Laravel5.3中执行一些原始查询。查询很简单,但我会出错 table name: users columns: id|name|email|phone|created_at|updated_at 我的问题是: SELECT created_at AS member_since, count(*) as row_count FROM users GROUP by MONTH(created_at); 当我在phpmyadmin上执行此查询时,此原始查询工作正常。但当我使用lara

我试图在Laravel5.3中执行一些原始查询。查询很简单,但我会出错

table name: users
columns: id|name|email|phone|created_at|updated_at
我的问题是:

SELECT created_at AS member_since, count(*) as row_count
FROM users
GROUP by MONTH(created_at);
当我在phpmyadmin上执行此查询时,此原始查询工作正常。但当我使用laravel的数据库查询生成器执行此操作时,我得到了一个错误

SQLSTATE[42000]: Syntax error or access violation: 1055 
'query.users.created_at' isn't in GROUP BY
SQLSTATE[42000]: Syntax error or access violation: 1055 
    'query.users.created_at' isn't in GROUP BY (SQL: select created_at AS 
    member_since from `users` group by MONTH(created_at))
这是我的控制器:

$users = DB::table('users')
            ->select(DB::raw('created_at AS member_since', 'count(*) AS row_count'))
            ->groupBy(DB::raw('MONTH(created_at)'))
            ->get();

return response()->json($users);

如果我错了,请纠正我。有没有更好的方法来执行原始查询?

首先,您需要了解您遇到的错误。这个问题就是关于它的

现在,考虑到这一点,你有两个选择

  • 通过设置仅禁用
    完整组
    
  • 遵循提供的指示 通过错误消息:

      $users = DB::table('users')
        ->select(DB::raw('created_at AS member_since, count(*) AS row_count'))
        ->groupBy(DB::raw('MONTH(created_at)'), 'created_at')
        ->get();
    
groupBy(DB::raw('MONTH(created_at')),'created_at')
也可以是
groupBy(DB::raw('MONTH(created_at)),created_at')