2016-09-24 1 views
0

Group von ist problematisch, seit ich zu PHP 7 gewechselt habe und Aggregatwerte nicht auf die Art und Weise, wie ich es verwenden möchte.GroupBy in Laravel 5.3 und PHP 7 funktioniert nicht

Ich habe eine Liste und manchmal gibt es Wiederholungen in der Liste. Zum Beispiel:

Song-Titel A Song Titel B Song-Titel A (Reprise) Song Titel C

In den Ergebnissen sollen Song-Titel A zeigt nur einmal auf. Zuvor hatte ich dies mit group by gemacht, wo die ID, die den Songtitel bestimmt, gruppiert wird.

Meine Tabellenstruktur ist:

id 
group_id 
song_title_id 

Song_title_id betrifft:

id 
song_title 

In der ersten Tabelle, kann es mehrere Instanzen des gleichen song_title_id sein. Und wenn Ergebnisse zurückgegeben werden, möchte ich, dass nur eine Instanz jeder song_title_id in den Ergebnissen angezeigt wird.

Zuvor hatte ich getan habe:

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

zu PHP 7 Seit der Aktualisierung ich eine Fehlermeldung erhalten:

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

Was mache ich falsch?

Antwort

0

von How to resolve "isn't in GROUP BY" error in mysql query Jedes nicht-aggregierten Feld gruppiert werden soll, so versuchen

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

So müßte jede einzelne Spalte in der Tabelle in groupBy aufgenommen werden? – jerauf

+0

Muss ich jede einzelne Spalte in der Tabelle auflisten? Könnte dasselbe mit distinct gemacht werden? '- (song_title_id') -> groupBy – jerauf

+0

Sie können nur einzelne groupBy und Einzel wählen 'DB :: Tabelle (' group_songs)> wählen 'add (' song_title_id ') -> get();' Wenn Sie jedoch alle Off-Spalten benötigen, müssen Sie sie gruppieren oder Gruppenfunktionen (wie MIN/MAX) für nicht gruppierte Spalten hinzufügen – Geding

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