Problem:
In Laravel wird versucht Die Verwendung der WhereIn- und GroupBy-Klauseln in einer einzigen Abfrage führt zu folgendem Ergebnis Fehler:
SQLSTATE[42000]: Syntax error or access violation: 1055 'sbrtpt.loading.id' isn't in GROUP BY
Erklärung:
Standardmäßig erzwingt die Datenbankkonfiguration von Laravel den strikten SQL-Modus, der vorschreibt, dass jede Spalte, auf die in einer WHERE-Klausel verwiesen wird, auch in erscheinen muss die GROUP BY-Klausel, wenn die Abfrage eine GROUP BY-Operation enthält. In diesem speziellen Fall ist die ID-Spalte in der WhereIn-Klausel, aber nicht in der GroupBy-Klausel enthalten, was den Fehler verursacht.
Lösung:
Es gibt zwei mögliche Lösungen um dieses Problem zu beheben:
Option 1: Strikten Modus deaktivieren
Zum Deaktivieren Navigieren Sie im Strict-Modus zur Datei config/database.php und ändern Sie die MySQL-Array-Einstellungen wie folgt:
'mysql' => [ ... 'strict' => false, ... ]
Indem Sie Strict auf False setzen, deaktivieren Sie effektiv alle Regeln des Strict-Modus.
Option 2: Spezifische Modi angeben
Alternativ, wenn Sie den strikten Modus beibehalten und nur die spezifische Regel deaktivieren möchten das Problem verursacht, ändern Sie die Option „modes“ im Array „mysql“ in config/database.php. Um beispielsweise den Modus „NUR_FULL_GROUP_BY“ zu deaktivieren, fügen Sie die folgende Zeile hinzu:
'modes' => [ // Disable this to allow grouping by one column 'ONLY_FULL_GROUP_BY', // Other strict mode options ]
Zusätzliche Informationen:
Im Allgemeinen ist es ratsam, die zweite Option zu verwenden (Angabe spezifischer Modi), da Sie damit nur die erforderlichen strengen Modusregeln deaktivieren und gleichzeitig die Vorteile des strengen Modus beibehalten können. Indem Sie die Dokumentation für Ihr spezifisches Datenbankverwaltungssystem (z. B. MySQL) überprüfen, können Sie feststellen, welche zusätzlichen Modi zur Behandlung dieses Fehlers geeignet sein könnten.
Das obige ist der detaillierte Inhalt vonLaravel WhereIn und GroupBy: Wie behebt man den „1055-Fehler'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!