Heim > Datenbank > MySQL-Tutorial > Wie löse ich „sql_mode=only_full_group_by'-Konflikte in Laravel Eloquent-Abfragen?

Wie löse ich „sql_mode=only_full_group_by'-Konflikte in Laravel Eloquent-Abfragen?

Susan Sarandon
Freigeben: 2024-11-19 10:12:02
Original
948 Leute haben es durchsucht

How to Resolve `sql_mode=only_full_group_by` Conflicts in Laravel Eloquent Queries?

Fehlerbehebung: Inkompatibel mit sql_mode=only_full_group_by in Laravel Eloquent

Beim Ausführen von Laravel Eloquent-Abfragen kann ein Fehler im Zusammenhang mit sql_mode=only_full_group_by auftreten . Dieser Fehler tritt auf, wenn eine Abfrage nicht aggregierte Spalten in der GROUP BY-Klausel enthält.

Ursache:

Der Fehler wird durch einen strikten MySQL-Modus verursacht, der alle Spalten erfordert in der SELECT-Liste, um entweder in der GROUP BY-Klausel gruppiert oder aggregiert zu werden. In der bereitgestellten Eloquent-Abfrage ist die ID-Spalte in der SELECT-Liste enthalten, aber nicht in der GROUP BY-Klausel.

Lösung:

Die bevorzugte Lösung ist Deaktivieren Sie den strikten MySQL-Modus in den Datenbankverbindungseinstellungen. Dies kann erreicht werden, indem Sie Folgendes zu Ihrer Datei config/database.php hinzufügen:

'mysql' => [
    'strict' => false,
],
Nach dem Login kopieren

Alternative Lösung:

Wenn das Deaktivieren des strengen Modus keine Option ist können Sie die Abfrage ändern, um sicherzustellen, dass alle Spalten in der SELECT-Liste entweder gruppiert oder aggregiert sind. Im Fall der Beispielabfrage kann dies erreicht werden, indem Product::raw('COUNT(*) as product_count') zur SELECT-Klausel hinzugefügt und sowohl nach store_id als auch nach id:

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

Das obige ist der detaillierte Inhalt vonWie löse ich „sql_mode=only_full_group_by'-Konflikte in Laravel Eloquent-Abfragen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage