Heim > Datenbank > MySQL-Tutorial > Wie behebe ich den MySQL-Fehler „Inkompatibel mit sql_mode=only_full_group_by' in Laravel Eloquent?

Wie behebe ich den MySQL-Fehler „Inkompatibel mit sql_mode=only_full_group_by' in Laravel Eloquent?

DDD
Freigeben: 2024-11-22 16:16:47
Original
923 Leute haben es durchsucht

How to Resolve MySQL's

Lösen des MySQL-Problems „Inkompatibel mit sql_mode=only_full_group_by“ in Laravel Eloquent

Ein häufiges Problem bei der Verwendung von Laravel Eloquent für Datenbankoperationen ist der MySQL-Fehler „Expression #1 der SELECT-Liste ist nicht in der GROUP BY-Klausel und enthält eine nicht aggregierte Spalte [...].“ Dieser Fehler tritt aufgrund des strikten MySQL-Modus „only_full_group_by“ auf.

Um das Problem zu veranschaulichen, betrachten Sie die folgende Eloquent-Abfrage:

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

Die Ausführung dieser Abfrage kann zu dem oben genannten MySQL-Fehler führen. Der Grund dafür ist, dass der only_full_group_by-Modus von MySQL erfordert, dass alle Spalten in der SELECT-Liste entweder aggregierte Funktionen (z. B. COUNT, SUM) sind oder in der GROUP BY-Klausel enthalten sind. In dieser Abfrage ist die ID-Spalte jedoch nicht in der GROUP BY-Klausel enthalten, sondern in der SELECT-Liste vorhanden.

Um dieses Problem zu beheben, besteht eine wirksame Methode darin, den strikten Modus von MySQL in den Datenbankverbindungseinstellungen zu deaktivieren :

'connections' => [
    'mysql' => [
        // Disabling strict mode for MySQL 5.6
        'strict' => false,
    ]
]
Nach dem Login kopieren

Alternativ können Sie die Spalte zur GROUP BY-Klausel hinzufügen:

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

Indem Sie den strikten Modus lockern oder anpassen Wenn Sie die Abfrage an die MySQL-Anforderungen anpassen, können Sie diesen Fehler beheben und Ihre Daten erfolgreich abrufen.

Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQL-Fehler „Inkompatibel mit sql_mode=only_full_group_by' in Laravel Eloquent?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage