Problemas con GROUP BY en Laravel/Eloquent

Aquí os dejo un pequeño truco para poder resolver un problema que me ha llevado bastante tiempo resolver de una forma “elegante”:

Si cuando pruebas en tu entorno local, te funciona en tu aplicación Laravel un GROUP BY en una query SQL con Eloquent, en la que no introduces todos tus datos del select, y necesitas que ese comportamiento funcione en un hosting en un entorno de producción, donde normalmente tú no puedes controlar la configuración de las bases de datos MySQL/MariaDB, este sencillo truco debería funcionarte y hacer que funcionen estas queries sin problemas:

Abre el fichero config/database.php de tu aplicación Laravel, y en la sección de MySQL, justo debajo de ‘strict’ => true, pon lo siguiente:

'modes' => [
//'ONLY_FULL_GROUP_BY', // Disable this to allow grouping by one column
'STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_AUTO_CREATE_USER',
'NO_ENGINE_SUBSTITUTION'
],

Con esto harás que Laravel no obligue a que todas las variables del select estén en el group by y te funcionarán perfectamente este tipo de queries.

Espero que os ayude a resolver este problema, que tanto me costó resolver sin poner la variable strict a false de este fichero, como proponían en muchos foros, una solución rápida pero que puede dejar a tu aplicación en una situación fea contra una base de datos, con funcionamientos anómalos de tus operaciones contra ella en tu hosting.

3 comentarios en “Problemas con GROUP BY en Laravel/Eloquent

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.