2016-09-24 35 views
0

由于我切换到PHP 7并且具有聚合值并不适用于我想要使用它的方式,所以Group by有问题。GroupBy在Laravel 5.3和PHP 7中不起作用

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

歌名歌曲标题B歌曲名称A(重奏)乐曲标题C

在结果中,歌曲名称A应该只出现一次。以前,我是通过分组完成的,其中确定歌曲标题的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 

我在做什么错?

回答

0

通过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(); 
+0

因此,表中的每一单柱将需要纳入GROUPBY? – jerauf

+0

我是否需要列出表格中的每一列?同样的事情可以用不同的方式来完成吗? – jerauf

+0

您可以只添加一个groupBy和一个select 'DB :: table('group_songs') - > select('song_title_id') - > groupBy('song_title_id') - > get();' 但是如果你需要所有关闭的列,你将需要对它们进行分组或者在未分组的列上添加组功能(如MIN/MAX) – Geding

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