gpt4 book ai didi

Laravel 错误 : 1140 Mixing of GROUP columns (MIN(), MAX(),COUNT()

转载 作者:行者123 更新时间:2023-12-04 12:44:54 25 4
gpt4 key购买 nike

任何熟悉这个 Laravel 错误的人:

"SQLSTATE[42000]: Syntax error or access violation: 1140 Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause (SQL: select office, avg(q1) as q1, avg(q2) as q2 from feedback)"



这是我的 Controller 代码:
$feedback_data = DB::table('feedback')
->select(DB::raw('office, avg(q1) as q1, avg(q2) as q2'))
->get();
return view('/feedback/index')->with('feedback_data', $feedback_data);

最佳答案

使用时 MIN(),MAX(),COUNT() AVG()像聚合函数一样,你必须使用 GROUP BY , 但根据最新 MYSQL版本您必须使用选择查询中的所有列作为 GROUP BY .
所以解决这个错误有两种方法:

  • 您可以使用 GROUP BY在相关栏目。
  • 您可以在 config/database.php 中禁用严格模式通过将其设置为 false .
  • GROUP BY已经在此处给出的答案之一中显示,因此我们将讨论严格模式,因此 laravel 的严格模式为 true默认情况下不允许在单列上分组,因此您必须将严格模式设置为 false如果你想在单列上分组。
    禁用“严格”模式,返回到 <= MYSQL 5.6启用“严格”模式时的行为,将其设置为 MYSQL 5.7行为,我们想禁用它,因为禁用它将允许我们在单列上分组。
    因此,要设置严格模式,请转到 config/database.php并将严格模式设置为 false .
    'mysql' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', 'localhost'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => false, //it will be true by default set this to false
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
    PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
    ],

    关于Laravel 错误 : 1140 Mixing of GROUP columns (MIN(), MAX(),COUNT(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52195430/

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