Maison > développement back-end > tutoriel php > Laravel WhereIn et GroupBy : Comment résoudre « l'erreur 1055 » ?

Laravel WhereIn et GroupBy : Comment résoudre « l'erreur 1055 » ?

Barbara Streisand
Libérer: 2024-12-08 03:21:11
original
841 Les gens l'ont consulté

Laravel WhereIn and GroupBy: How to Resolve the

Laravel : Comprendre « l'erreur 1055 » dans les requêtes WhereIn et GroupBy

Problème :

Dans Laravel, tenter de utiliser les clauses WhereIn et GroupBy dans une seule requête donne les résultats suivants erreur :

SQLSTATE[42000]: Syntax error or access violation: 1055 'sbrtpt.loading.id' isn't in GROUP BY
Copier après la connexion

Explication :

Par défaut, la configuration de la base de données de Laravel applique le mode SQL strict, qui exige que chaque colonne référencée dans une clause WHERE doit également apparaître dans la clause GROUP BY si la requête contient une opération GROUP BY. Dans ce cas particulier, la colonne id est incluse dans la clause WhereIn mais pas dans la clause GroupBy, provoquant l'erreur.

Solution :

Il existe deux solutions possibles pour résoudre ce problème :

Option 1 : Désactiver le mode strict

Pour désactivez le mode strict, accédez au fichier config/database.php et modifiez les paramètres du tableau mysql comme suit :

'mysql' => [
    ...
    'strict' => false,
    ...
]
Copier après la connexion

En définissant strict sur false, vous désactivez efficacement toutes les règles du mode strict.

Option 2 : Spécifier des modes spécifiques

Alternativement, si vous souhaitez conserver le mode strict tout en désactivant uniquement la règle spécifique qui est à l'origine du problème, modifiez l'option « modes » dans le tableau « mysql » dans config/database.php. Par exemple, pour désactiver le mode ONLY_FULL_GROUP_BY, ajoutez la ligne suivante :

'modes' => [
    // Disable this to allow grouping by one column
    'ONLY_FULL_GROUP_BY',
    // Other strict mode options
]
Copier après la connexion

Informations supplémentaires :

Il est généralement conseillé d'utiliser la deuxième option (en précisant des modes) car il vous permet de désactiver uniquement les règles de mode strict nécessaires tout en conservant les avantages du mode strict. En consultant la documentation de votre système de gestion de base de données spécifique (par exemple, MySQL), vous pouvez déterminer quels modes supplémentaires peuvent être appropriés pour gérer cette erreur.

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