„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 löse ich den SQL_MODE=ONLY_FULL_GROUP_BY-Konflikt in Laravel Eloquent?

Wie löse ich den SQL_MODE=ONLY_FULL_GROUP_BY-Konflikt in Laravel Eloquent?

Veröffentlicht am 04.11.2024
Durchsuche:990

How to Resolve SQL_MODE=ONLY_FULL_GROUP_BY Conflict in Laravel Eloquent?

Auflösen des SQL_MODE=ONLY_FULL_GROUP_BY-Konflikts in Laravel Eloquent

Wenn Sie Eloquent zum Durchführen einer Gruppierungsabfrage verwenden, kann ein Fehler im Zusammenhang mit auftreten Inkompatible Einstellungen für sql_mode=only_full_group_by. Dieser Fehler kann auftreten, wenn nicht aggregierte Spalten in der SELECT-Liste enthalten sind, die nicht Teil der GROUP BY-Klausel sind.

Um dieses Problem zu lösen, können Sie den strikten MySQL-Modus deaktivieren, indem Sie Folgendes in Ihrer Datenbank festlegen Konfigurationsdatei:

'connections' => [
    'mysql' => [
        'strict' => false,
    ]
]

Indem Sie „strict“ auf „false“ setzen, erlauben Sie MySQL, sich so zu verhalten, als würde es im MySQL 5.6-Modus laufen, der die strengen Gruppierungsregeln, die durch sql_mode=only_full_group_by auferlegt werden, nicht erzwingt.

Alternativ können Sie Ihre Eloquent-Abfrage ändern, um sicherzustellen, dass alle Spalten in der SELECT-Liste entweder aggregiert oder in der GROUP BY-Klausel enthalten sind. Sie könnten beispielsweise die Methode „raw“ verwenden, um die erforderliche Aggregation hinzuzufügen:

$products = Product::where('status', 1)
    ->where('stock', '>', 0)
    ->where('category_id', '=', $category_id)
    ->groupBy('store_id')
    ->orderBy('updated_at', 'desc')
    ->selectRaw('*, COUNT(*) AS total_products')
    ->take(4)
    ->get();
Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729224796 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