【发布时间】:2022-06-16 23:18:49
【问题描述】:
我正在 PHP 7.4 上运行 Laravel 8 项目。我有一个名为add_ons 的表和一个名为Addon 的模型。 Addon 模型有一个名为 group 的列,这就是我想将某些行组合在一个对象下的方式,当我尝试在我的模型上使用 groupBy 方法时,我收到此错误:
语法错误或访问冲突:1055 SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含在功能上不依赖于 GROUP BY 子句中的列的非聚合列“domainmonitor_db.add_ons.id”
为了实现我想要的分组功能,我缺少什么?
/**
* Handle the incoming request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function __invoke(Request $request)
{
$addons = Addon::groupBy('group')->get();
}
【问题讨论】:
-
下面的答案包含很多有用的信息,所以我不把它作为答案,而是评论:在
config/database.php中,检查你的Connection 的'strict'设置。如果是'strict' => true,,我发现很多groupBy()语句都失败并出现类似错误。您可以将其设置为'strict' => false,,但请仔细阅读其任何缺点,特别是针对您的数据库引擎(MySQL与Postgres等)