"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment résoudre le conflit SQL_MODE=ONLY_FULL_GROUP_BY dans Laravel Eloquent ?

Comment résoudre le conflit SQL_MODE=ONLY_FULL_GROUP_BY dans Laravel Eloquent ?

Publié le 2024-11-04
Parcourir:745

How to Resolve SQL_MODE=ONLY_FULL_GROUP_BY Conflict in Laravel Eloquent?

Résolution des conflits SQL_MODE=ONLY_FULL_GROUP_BY dans Laravel Eloquent

Lorsque vous utilisez Eloquent pour effectuer une requête groupée, vous pouvez rencontrer une erreur liée à paramètres incompatibles pour sql_mode=only_full_group_by. Cette erreur peut se produire lorsque des colonnes non agrégées sont incluses dans la liste SELECT et ne font pas partie de la clause GROUP BY.

Pour résoudre ce problème, vous pouvez désactiver le mode MySQL strict en définissant les éléments suivants dans votre base de données fichier de configuration :

'connections' => [
    'mysql' => [
        'strict' => false,
    ]
]

En définissant 'strict' sur false, vous autorisez MySQL à se comporter comme s'il fonctionnait en mode MySQL 5.6, ce qui n'applique pas les règles de regroupement strictes imposées par sql_mode=only_full_group_by.

Vous pouvez également modifier votre requête Eloquent pour vous assurer que toutes les colonnes de la liste SELECT sont soit agrégées, soit incluses dans la clause GROUP BY. Par exemple, vous pouvez utiliser la méthode 'raw' pour ajouter l'agrégation nécessaire :

$products = Product::where('status', 1)
    ->where('stock', '>', 0)
    ->where('category_id', '=', $category_id)
    ->groupBy('store_id')
    ->orderBy('updated_at', 'desc')
    ->selectRaw('*, COUNT(*) AS total_products')
    ->take(4)
    ->get();
Déclaration de sortie Cet article est réimprimé à l'adresse : 1729224796. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3