„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie behebt man den Fehler „Ausdruck Nr. 1 der SELECT-Liste ist nicht in der GROUP BY-Klausel“ in Laravel Eloquent aufgrund des strengen MySQL-Modus?

Wie behebt man den Fehler „Ausdruck Nr. 1 der SELECT-Liste ist nicht in der GROUP BY-Klausel“ in Laravel Eloquent aufgrund des strengen MySQL-Modus?

Veröffentlicht am 08.11.2024
Durchsuche:320

How to Fix \

Inkompatibilität mit sql_mode=only_full_group_by in Laravel Eloquent

Es tritt der Fehler „Ausdruck Nr. 1 der SELECT-Liste ist nicht in der GROUP BY-Klausel“ auf. .“ beim Ausführen einer Eloquent-Abfrage mit Gruppierung deutet auf eine Inkompatibilität mit MySQLs sql_mode=only_full_group_by hin. Um dieses Problem zu beheben:

Deaktivieren Sie den strengen MySQL-Modus

Eine Lösung besteht darin, die Einstellung für den strengen MySQL-Modus in Ihrer Datenbankverbindungskonfiguration zu deaktivieren. Fügen Sie in der .env-Datei von Laravel die folgende Zeile hinzu:

DB_STRICT_MODE=false

Alternativ können Sie den strikten Modus in Ihrer config/database.php-Datei konfigurieren:

'mysql' => [
    // Disable strict mode
    'strict' => false,
],

Erklärung

In MySQL 5.7 und höher erfordert der sql_mode=only_full_group_by-Modus, dass alle Spalten in der SELECT-Liste entweder in der GROUP BY-Klausel enthalten sind oder sein aggregierte Funktionen. In der bereitgestellten Abfrage:

$products = Product::where('status', 1)
            ->where('stock', '>', 0)
            ->where('category_id', '=', $category_id)
            ->groupBy('store_id')
            ->orderBy('updated_at', 'desc')
            ->take(4)
            ->get();

Die Spalten-ID (Primärschlüssel) erscheint in der SELECT-Liste, ist aber nicht in der GROUP BY-Klausel enthalten. Durch Deaktivieren des strikten Modus lässt MySQL nicht aggregierte Spalten in der SELECT-Liste zu, die funktional nicht von den GROUP BY-Spalten abhängig sind.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729224679 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3