【问题标题】:GroupBy in Laravel 5.3 and PHP 7 not workingLaravel 5.3 和 PHP 7 中的 GroupBy 不起作用
【发布时间】:2016-09-24 19:32:26
【问题描述】:

分组依据是有问题的,因为我切换到 PHP 7 并且聚合值不适用于我想要使用它的方式。

我有一个列表,有时列表中有重复。例如:

歌曲标题 A 歌曲标题 B 歌曲标题 A (重复) 歌曲标题 C

在结果中,歌曲标题 A 应该只出现一次。以前,我使用 group by 完成此操作,其中确定歌曲标题的 ID 被分组。

我的表结构是:

id
group_id
song_title_id

Song_title_id 涉及:

id
song_title

在第一个表中,同一个 song_title_id 可以有多个实例。当返回结果时,我希望结果中只有一个 song_title_id 实例。

以前,我会这样做:

DB::table('group_songs')
         ->groupBy('song_title_id')
         ->get();

自从更新到 PHP 7 后,我收到一个错误:

Syntax error or access violation: 1055 '[table/column name]' isn't in GROUP BY

我做错了什么?

【问题讨论】:

    标签: php laravel-5


    【解决方案1】:
    'mysql' => [
        'strict' => false,
    ],
    

    【讨论】:

      【解决方案2】:

      How to resolve "isn't in GROUP BY" error in mysql query 每个非聚合字段都应该分组,所以试试

      DB::table('group_songs')
               ->groupBy('song_title_id')
               ->groupBy('group_id')
               ->groupBy('id')
                ->get();
      

      【讨论】:

      • 那么,表中的每一列都需要包含在 groupBy 中?
      • 我需要列出表格中的每一列吗?可以用 distinct 做同样的事情吗?
      • 你可以只添加一个 groupBy 和一个 select 'DB::table('group_songs') ->select('song_title_id') ->groupBy('song_title_id') ->get();'但如果您需要所有关闭的列,则需要对它们进行分组或在未分组的列上添加分组功能(如 MIN/MAX)
      猜你喜欢
      • 2017-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 2017-01-04
      • 2017-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多