Comment corriger l'erreur « L'expression n° 1 de la liste SELECT n'est pas dans la clause GROUP BY » dans Laravel Eloquent en raison du mode strict de MySQL ?

Linda Hamilton
Libérer: 2024-10-18 12:29:03
original
549 Les gens l'ont consulté

How to Fix

Incompatibilité avec sql_mode=only_full_group_by dans Laravel Eloquent

Rencontre avec l'erreur "L'expression n°1 de la liste SELECT n'est pas dans la clause GROUP BY.. . " lors de l'exécution d'une requête Eloquent avec regroupement suggère une incompatibilité avec sql_mode=only_full_group_by de MySQL. Pour résoudre ce problème :

Désactiver le mode strict MySQL

Une solution consiste à désactiver le paramètre de mode strict MySQL dans la configuration de votre connexion à la base de données. Dans le fichier .env de Laravel, ajoutez la ligne suivante :

DB_STRICT_MODE=false
Copier après la connexion

Alternativement, vous pouvez configurer le mode strict dans votre fichier config/database.php :

<code class="php">'mysql' => [
    // Disable strict mode
    'strict' => false,
],</code>
Copier après la connexion

Explication

Dans MySQL 5.7 et versions ultérieures, le mode sql_mode=only_full_group_by nécessite que toutes les colonnes de la liste SELECT soient soit incluses dans la clause GROUP BY, soit soient des fonctions agrégées. Dans la requête fournie :

<code class="php">$products = Product::where('status', 1)
            ->where('stock', '>', 0)
            ->where('category_id', '=', $category_id)
            ->groupBy('store_id')
            ->orderBy('updated_at', 'desc')
            ->take(4)
            ->get();</code>
Copier après la connexion

L'identifiant de colonne (clé primaire) apparaît dans la liste SELECT mais n'est pas inclus dans la clause GROUP BY. En désactivant le mode strict, MySQL autorisera les colonnes non agrégées dans la liste SELECT qui ne dépendent pas fonctionnellement des colonnes GROUP BY.

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
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!