Laravel: Error de sintaxis o infracción de acceso: Error 1055
Quiero usar WhereIn y Groupby en la misma consulta para obtener el resultado.
He probado esto:
$loadids=explode("#@*",$reciptdet->loading_id);
$loadingdatas=DB::table('loading')->groupBy('vehicle_no')->whereIn('id',$loadids)->get();
Pero recibí este mensaje de error:
SQLSTATE[42000]: Error de sintaxis o infracción de acceso: 1055 'sbrtpt.loading.id' no está en GRUPO POR (SQL: seleccione * de carga donde id en (14, 15, 16) grupo por vehículo_no)
Aceptado
Respuesta corta
En config\database.php
--> "mysql"
matriz
Establecer 'strict' => false
para desactivar todo.
.... o
Puede salir 'strict' => true
y agregar modos a "mysql"
la opción en
'mysql' => [
...
....
'strict' => true,
'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'
],
]
Respuesta detallada
Es posible que no necesite desactivar todas las opciones estrictas ... Por favor, eche un vistazo a esta respuesta sobre este problema.
Probablemente se trate de un problema de SQL_MODE . En tu config/database.php
, en la conexión, cambia.
strict => false
Como en
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],