我正在尝试对使用 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/