2016-09-24 40 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, 
],