Php 在laravel 5.3中执行原始查询
我试图在Laravel5.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
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')