gpt4 book ai didi

php - (Laravel) 无法将 group by 与 order by 一起使用

转载 作者:行者123 更新时间:2023-11-29 06:35:31 25 4
gpt4 key购买 nike

我尝试使用 order by 而不在 groupby 中添加 order 列,只有当我直接从数据库执行它时它才有效,但从 laravel 中我收到数据库错误

我编写了这段 Eloquent 代码

Comment::select('product_id')->where('shop_name', $shop)->groupby('product_id')->distinct()->orderBy('created_at')->paginate(12)

它将产生以下查询

select distinct DISTINCT(product_id) from comments where shop_name = 'shopname' group by product_id order by created_at asc limit 12 offset 0

如果我直接在数据库中输入上述查询,它就可以工作

但是如果我使用 Laravel Eloquent 代码,它会引发此错误

SQLSTATE[42000]: Syntax error or access violation: 1055 'areviews_areviewzappz.comments.created_at' isn't in GROUP BY (SQL: select distinct DISTINCT(product_id) from comments where shop_name = 'shopname' group by product_id order by created_at asc limit 12 offset 0)

如何解决这个问题?

最佳答案

问题是您确实应该将 ORDER BY 包含在 GROUP BY 列表中,因为这是最佳实践。

当您将 sql 模式设置为“”时它会起作用的原因。然而,Laravel 默认情况下(我认为)将 Strict 设为 TRUE,

您有 2 个选择:

  1. 将created_at添加到GROUP BY子句中(推荐)
  2. 将严格模式更改为 false

有关第二个选项的更多信息:

How can I solve incompatible with sql_mode=only_full_group_by in laravel eloquent?

关于php - (Laravel) 无法将 group by 与 order by 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54076879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com