php - Laravel:对 View 的查询进行分页 MySQL 错误 1140 Mixing of GROUP columns

标签 php mysql laravel pagination eloquent

我正在尝试对使用 View 的查询进行简单分页:

DB::table('vw_myview')->paginate(50)

并得到这个错误:

SQLSTATE[42000]:语法错误或访问冲突:1140 如果没有 GROUP BY 子句 ( SQL:从 vw_myview 中选择 count(*) 作为聚合)

然而,当我手动运行查询时,它工作得很好:

mysql> select count(*) as aggregate from vw_myview;
+-----------+
| aggregate |
+-----------+
|       776 |
+-----------+
1 row in set (0.20 sec)

四处搜索后,我发现我只需要添加一个 GROUP BY 子句(就像错误所说的那样),但我试过这样做但没有成功:

DB::table('vw_myview')->groupBy('column_on_view')->paginate(50)

SQLSTATE[42000]:语法错误或访问冲突:1055 'database_name.table_used_by_view.column_on_table' 不在 GROUP BY 中(SQL:选择计数(*)作为来自 vw_myview 组的聚合 column_on_view )

好吧,让我们尝试在 View 使用的其中一个表上按列分组:

DB::table('vw_myview')->groupBy('table_used_by_view.column_on_table')->paginate(50)

SQLSTATE[42S22]:未找到列:1054 ‘group 语句’中的未知列‘database_name.table_used_by_view.column_on_table’(SQL:选择计数(*)作为来自 vw_myview group by database_name.table_used_by_view.column_on_table 的聚合)

那么,为什么当我手动运行时查询有效,但通过 Eloquent 运行时却失败了?任何帮助将不胜感激。

最佳答案

你知道,我想你的 Mysql 服务器打开了 sql_mode = ONLY_FULL_GROUP_BY...你能检查一下吗...(来自 mysql ...选择 @@sql_mode;如果已设置,请将其关闭.. . 并再次尝试您的查询...我认为它会通过...Mysql 5.7xxx 现在默认启用此功能...

关于php - Laravel:对 View 的查询进行分页 MySQL 错误 1140 Mixing of GROUP columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47044851/

相关文章:

mysql - 我可以将 MySQL 添加到已有 Node.js 的 EC2 实例上吗?

php - 如何为 Web 客户端和 native 移动应用程序设计 Laravel 5.1 应用程序

php - 如何在不编写长查询的情况下查询所有 GraphQL 类型字段?

php - MySQL:如何创建在数组索引上使用数组变量执行的查询?

php - 发布纯文本密码,还有其他选择吗

javascript - 包括将在 JavaScript 文件中重定向用户的 PHP 代码?

mysql - Python3、MySQL 和 SqlAlchemy — SqlAlchemy 是否始终需要 DBAPI?

php - jQuery 自动完成跨站点域 - 列表框不显示

php - 使用 php mysql 从类别中获取数据

mysql - 显示时从 Laravel 中的文件名中删除 time() 字符串