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.
Muchas gracias por tu artículo me ayudo mucho
Gracias amigo, yo sufriendo con pinche groupby pensando por que no da
Me ayudo un buen solo encontraba que ese modo lo tenia que desactivar, lo colocaba en mi manejador de base de datos, sin embargo era la configuración de laravel.