La aplicación está alojada en Bluehost en un hosting compartido. Intenté ejecutar la siguiente consulta en phpMyAdmin y los resultados funcionan bien:
SELECT employee_id , floor(Datediff(max(to_date), min(from_date))/365) As diif FROM `work_experiences` group by employee_id having floor(Datediff(max(to_date), min(from_date))/365) >=15A continuación se muestra mi generador de consultas de Laravel:
$query->groupBy('employee_id'); $query->havingRaw('Floor(Datediff(Max(to_date), min(from_date))/365) >='.$filterOverralExperienceA); $query->havingRaw('Floor(Datediff(Max(to_date), min(from_date))/365) <='. $filterOverralExperienceB);El código anterior me da el error de golpe:
Error de sintaxis o infracción de acceso: 1055 La expresión n.º 1 de la lista SELECT no está en la cláusula GROUP BY y contiene la columna no agregada 'affixpro_jobhut.work_experiences.id' que no depende funcionalmente de las columnas de la cláusula GROUP BY; esto es incompatible con sql_mode=only_full_group_by (SQL: seleccione count (*) como agregado de
usersdondeis_active= 1 y existe (seleccione * fromuser_typeswhereusers.id=user_types.user_idyis_type_active= 1 andis_active= 1) y existe ( seleccione * deemployeesdondeusers.id=employees.is_edited_first_timeuser_id1 y existe (seleccione * dework_experiencesdondeemployees.id= experiencias_laborales . grupo dework_experiencesporemployee_idcon Floor(employee_id(Max(to_date), min(from_date)))/ 365) >=10 y Floor(Datediff(Max(to_date), min(from_date))/365) <=100)))
Agrupar por ID funciona bien, pero no employee_id.
Ya intenté cambiar la configuración de la base de datos estricta a falsa, pero aún así continúa.
Agradezco su ayuda y asistencia en esto.
En SQL, cuando una consulta contiene una cláusula GROUP BY, todas las columnas devueltas por la consulta (en la parte SELECT) deben incluirse en la propia cláusula GROUP BY o agregarse para que MySQL sepa qué valor debe devolver.
Entonces, el motivo del mensaje de error es que la consulta generada por Eloquent contiene (select * from work_experiences .
Ahora, para arreglarlo en tu caso, supongo que solo tienes que agregar $query->select('employee_id'); justo antes de la cláusula GROUP BY para que la nueva consulta incluya (select employee_id from work_experiences .