Я хочу использовать WhereIn и Groupby в том же запросе, чтобы получить результат.
Я пробовал это:
$loadids=explode("#@*",$reciptdet->loading_id); $loadingdatas=DB::table('loading')->groupBy('vehicle_no')->whereIn('id',$loadids)->get();
Но я получил сообщение об ошибке:
SQLSTATE [42000]: ошибка синтаксиса или нарушение прав доступа: 1055 'sbrtpt.loading.id' не находится в GROUP BY (SQL: выберите * из загрузки, где id в (14, 15, 16) group by vehicle_no)
Вероятно, это проблема SQL_MODE . В вашем config/database.php
, в соединении, измените
strict => false
Как в
'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, ],
В массиве config\database.php
-> "mysql"
Установите 'strict' => false
чтобы отключить все.
Вы можете оставить 'strict' => true
и добавить режимы в "mysql"
в
'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' ], ]
Вам может не потребоваться отключить все строгие параметры … Пожалуйста, посмотрите на этот ответ об этой проблеме.