web-dev-qa-db-fra.com

Grouper par ne pas travailler - Laravel

Je ne suis pas en mesure d'exécuter cette requête simple dans Laravel 5.3

$top_performers = DB::table('pom_votes')
        ->groupBy('performer_id')
        ->get();

Ça me donne:

SQLSTATE[42000]: Syntax error or access violation: 1055 'assessment_system.pom_votes.id' isn't in GROUP BY (SQL: select * from `pom_votes` group by `performer_id`)

Toutefois, si je copie la requête brute de l'erreur et déclenche directement dans PhpMyAdmin, cela fonctionne correctement.

J'ai déjà vérifié ceci:

https://laravel.com/docs/5.3/queries#ordering-grouping-limit-and-offset

Toute aide serait appréciée.

Merci,

Parth Vora

17
Parth Vora

Editez le fichier de configuration de la base de données de vos applications config/database.php

Dans le tableau mysql, définissez strict => false pour désactiver le mode strict de MySQL

62
Md.Jewel Mia

Peut-être que votre problème est dû au fait que vous utilisez un serveur MySQL avec la version 5.7.5+. À partir de cette version, la façon dont fonctionne GROUP BY est modifiée, car elle se comporte de manière à être conforme à SQL99 (alors que ce n'était pas le cas dans les versions précédentes).

Essayez de faire un groupe complet ou de changer la configuration de votre serveur MySQL.

Lien vers la documentation officielle MySQL où le GROUP BY complet est expliqué

11
Gabriele Ciech

Editez le fichier de configuration de la base de données de vos applications config/database.php

Dans le tableau mysql, définissez strict => false pour désactiver le mod strict de MySQL.

ou

Sudo nano /etc/mysql/mysql.cnf

[mysqld] sql_mode = NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION

0
Suraj Vaghela