Maison > Article > base de données > Comment corriger l'erreur MySQL « Expression n° 1 de la liste SELECT pas dans GROUP BY » de Laravel Eloquent ?
Résolution de l'erreur « Expression n°1 de la liste SELECT pas dans GROUP BY » de MySQL dans Laravel Eloquent
Dans Laravel Eloquent, une erreur courante rencontrée est l'erreur « L'expression n°1 de la liste SELECT n'est pas dans la clause GROUP BY » lors de l'utilisation de la méthode groupBy(). Cela se produit généralement lorsque des colonnes non agrégées sont incluses dans la liste SELECT alors que l'agrégation est effectuée sur d'autres colonnes.
Considérez la requête Laravel Eloquent suivante :
$products = Product::where('status', 1) ->where('stock', '>', 0) ->where('category_id', '=', $category_id) ->groupBy('store_id') ->orderBy('updated_at', 'desc') ->take(4) ->get();
L'exécution de cette requête peut entraîne l'erreur suivante :
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)
Pour résoudre ce problème, désactivez le mode strict de MySQL dans les paramètres de connexion à la base de données. Ce mode applique une syntaxe SQL et des regroupements de colonnes plus stricts, ce qui peut entrer en conflit avec la requête en cours d'exécution.
Modifiez la configuration de la base de données dans le fichier config/database.php :
'connections' => [ 'mysql' => [ // Behave like MySQL 5.6 'strict' => false, // Behave like MySQL 5.7 'strict' => true, ] ]
Définissez la configuration stricte option sur false pour désactiver le mode strict dans la connexion MySQL. Cela devrait résoudre l'erreur « Expression n° 1 de la liste SELECT pas dans GROUP BY ».
Pour des paramètres de configuration plus avancés, reportez-vous au billet de blog de Matt Stauffer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!