Maison > base de données > tutoriel mysql > le corps du texte

Comment corriger l'erreur MySQL « Expression n° 1 de la liste SELECT pas dans GROUP BY » de Laravel Eloquent ?

Mary-Kate Olsen
Libérer: 2024-11-19 11:27:02
original
929 Les gens l'ont consulté

How to Fix Laravel Eloquent's

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();
Copier après la connexion

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)
Copier après la connexion

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,
    ]
]
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal