【问题标题】:Laravel 5.6 chunk with groupBy带有 groupBy 的 Laravel 5.6 块
【发布时间】:2018-10-11 22:12:22
【问题描述】:

我在下面执行时遇到错误,而没有 groupBy 它工作正常。

    User::select('col')->groupBy('col1')->chunk(100, function ($users) {
        foreach ($users as $user) {
            dump($user);
        }
    });

错误:

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column

【问题讨论】:

  • 除了col之外,您可能还需要选择col1才能groupBy('col1')
  • 如果你在没有ORDER BY 子句的查询中使用chunk(),Laravel 默认使用主键。试试->orderBy('col1')

标签: mysql laravel eloquent


【解决方案1】:

你可以做类似的事情需要使用 orderBy

User::select('col')
    ->orderBy('col1')
    ->groupBy('col1')
    ->chunk(100, function ($users) {
        foreach ($users as $user) {
            // code ..
        }
    });

【讨论】:

  • 它对我来说工作正常 mysql 5.7.22 和 laravel 6.18.10
  • 好吧,让我们来决定观众,如果你的投票上升,我一定会标记你的答案。
【解决方案2】:

以下内容对我有用。

config/database.php文件更新如下。

之前

'mysql' => [
    ...
    'strict'         => true,
    ...
],

之后

'mysql' => [
    ...
    'strict'         => false,
    ...
],

注意:已经快 2 年了,没有人回答我的问题,这是答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-01
    • 2019-03-27
    • 2018-11-30
    • 2018-12-17
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多