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
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, ... ]
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 ]
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!