Heim > Datenbank > MySQL-Tutorial > Wie behebe ich den MySQL-Fehler „Expression #1 of SELECT List Not in GROUP BY' von Laravel Eloquent?

Wie behebe ich den MySQL-Fehler „Expression #1 of SELECT List Not in GROUP BY' von Laravel Eloquent?

Mary-Kate Olsen
Freigeben: 2024-11-19 11:27:02
Original
999 Leute haben es durchsucht

How to Fix Laravel Eloquent's

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();
Nach dem Login kopieren

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)
Nach dem Login kopieren

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,
    ]
]
Nach dem Login kopieren

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!

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