Auflösen des MySQL-Fehlers „Ausdruck Nr. 1 der SELECT-Liste nicht in GROUP BY“ in Laravel Eloquent
In Laravel Eloquent ist ein häufiger Fehler aufgetreten ist der Fehler „Ausdruck Nr. 1 der SELECT-Liste ist nicht in der GROUP BY-Klausel“ bei Verwendung der Methode groupBy(). Dies tritt normalerweise auf, wenn nicht aggregierte Spalten in die SELECT-Liste aufgenommen werden, während die Aggregation für andere Spalten durchgeführt wird.
Betrachten Sie die folgende Laravel 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();
Das Ausführen dieser Abfrage kann führt zu folgendem Fehler:
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'myshop.products.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (SQL: select * from products where status = 1 and stock > 0 and category_id = 5 group by store_id order by updated_at desc limit 4)
Um dieses Problem zu beheben, deaktivieren Sie den strikten Modus von MySQL in den Datenbankverbindungseinstellungen. Dieser Modus erzwingt eine strengere SQL-Syntax und Spaltengruppierung, was zu Konflikten mit der ausgeführten Abfrage führen kann.
Ändern Sie die Datenbankkonfiguration in der Datei config/database.php:
'connections' => [ 'mysql' => [ // Behave like MySQL 5.6 'strict' => false, // Behave like MySQL 5.7 'strict' => true, ] ]
Legen Sie die Strikte fest Option auf „false“ setzen, um den strikten Modus in der MySQL-Verbindung zu deaktivieren. Dadurch sollte der Fehler „Ausdruck Nr. 1 der SELECT-Liste nicht in GROUP BY“ behoben werden.
Weitere Konfigurationseinstellungen finden Sie im Blogbeitrag von Matt Stauffer.
Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQL-Fehler „Expression #1 of SELECT List Not in GROUP BY' von Laravel Eloquent?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!