【问题标题】:Group by not working after upgrading to laravel 5.3升级到 laravel 5.3 后不工作分组
【发布时间】:2017-01-13 16:03:03
【问题描述】:

这是在 laravel 5.2 上运行的代码

$menus = CmsMenuItem::groupBy('menu_id')->get();

但现在它会抛出错误

SQLSTATE[42000]:语法错误或访问冲突:1055 表达式 #1 的 SELECT 列表不在 GROUP BY 子句中并且包含非聚合 列 'convertifier_cms.cms_menu_items.id' 没有功能 依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by (SQL: select * from 'cms_menu_items' group 通过'menu_id')

我也试过

 `strict => false` 

在database.php中但没有效果

【问题讨论】:

    标签: php laravel orm laravel-5.2 laravel-5.3


    【解决方案1】:

    根据此 PR,只需在您的数据库配置中尝试此操作

    'strict' => false,
    

    如果没有,则存在一些已知问题。

    请参考这些链接PR & Issue

    【讨论】:

      【解决方案2】:

      数据库配置试试这个。

       'mysql' => [
                  'driver' => 'mysql',
                  'host' => env('DB_HOST', 'localhost'),
                  'port' => env('DB_PORT', '3306'),
                  'database' => env('DB_DATABASE', 'forge'),
                  'username' => env('DB_USERNAME', 'forge'),
                  'password' => env('DB_PASSWORD', ''),
                  'charset' => 'utf8',
                  'collation' => 'utf8_unicode_ci',
                  'prefix' => '',
                  'strict' => false,
                  'engine' => null,
              ],
      

      并像这样使用查询

      $menus =DB::table('cms_menu_item')
          ->select('*')
          ->groupBy('menu_id')
          ->get();
      

      【讨论】:

      • php artisan config:clear 配置更改后
      • 如何在 Lumen 8 中做到这一点?任何建议。谢谢。
      【解决方案3】:

      请转到您的 config/database.php 文件夹。在mysql配置数组中,将strict => true改为strict => false,一切正常。

      【讨论】:

        猜你喜欢
        • 2017-04-24
        • 2017-06-12
        • 2017-02-24
        • 1970-01-01
        • 2018-04-23
        • 1970-01-01
        • 2021-03-10
        • 2018-09-16
        • 1970-01-01
        相关资源
        最近更新 更多