MY SQL查询:
SELECT * ,COUNT(posts_id) as `view `FROM `post_view` JOIN posts ON post_view.posts_id = posts.id
GROUP BY
posts_id
我雄辩的Laravel:
$this->model->Join('posts','post_view.posts_id', '=', 'posts.id')
->selectRaw('*, count(posts_id) as view')
->groupBy('posts_id')
->get();
通过邮递员获取时出错:
SQLSTATE[42000]: Syntax error or access violation: 1055 'databasePost.post_view.id' isn't in GROUP BY
(SQL: select *, count(posts_id) as view from `post_view` inner join `posts` on `post_view`.`posts_id` =
`posts`.`id` group by `posts_id`)
答案 0 :(得分:2)
发生此错误是因为group by
要求所有列,这是查询的速度。
我认为您使用的MySQL服务器版本为5.7.5+。 检查一下:MySQL Handling of GROUP BY
使用ANY_VALUE
到列或禁用mysql模式:ONLY_FULL_GROUP_BY.
->selectRaw('ANY_VALUE(post_view.id), ... count(posts_id) as view')
->groupBy('posts_id')
PS:post_view.id
和posts.id
都命名为id
,请全选它们,以使其中的一个被覆盖。
编辑应用程序的数据库配置文件config/database.php
在mysql数组中,设置strict => false
以禁用MySQL的严格模式:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
...
'strict' => false,
],