Erreur de requête Laravel Eloquent : incompatible avec sql_mode=only_full_group_by
Dans certains scénarios impliquant des requêtes Laravel Eloquent, vous pouvez rencontrer un message d'erreur indiquant :
<code class="text">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</code>
Cette erreur est causée par le mode strict de MySQL, qui nécessite que toutes les colonnes de la liste SELECT soient regroupées ou agrégées.
Solution : désactiver le mode strict de MySQL
La solution la plus simple et la plus efficace à ce problème consiste à désactiver le mode strict MySQL dans les paramètres de connexion à votre base de données. Ceci peut être réalisé en ajoutant la configuration suivante à votre fichier database.php :
<code class="php">'connections' => [ 'mysql' => [ // Behave like MySQL 5.6 'strict' => false, // Behave like MySQL 5.7 'strict' => true, ] ]</code>
Définir 'strict' sur 'false' permettra à vos requêtes de s'exécuter sans la contrainte imposée par sql_mode=only_full_group_by.
Configuration avancée
Pour un contrôle plus précis du comportement du mode strict de MySQL, vous pouvez vous référer au billet de blog de Matt Stauffer sur le sujet :
<code class="text">https://mattstauffer.com/blog/mysql-config-for-laravel-developers</code>
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!