Heim  >  Artikel  >  Backend-Entwicklung  >  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?

Linda Hamilton
Linda HamiltonOriginal
2024-10-18 12:29:03640Durchsuche

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:

<code class="php">'mysql' => [
    // Disable strict mode
    'strict' => false,
],</code>

Erläuterung

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 aggregierte Funktionen sind. In der bereitgestellten Abfrage:

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

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.

Das obige ist der detaillierte Inhalt vonWie 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?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn