Laravel : 语法错误或访问冲突: 1055 错误

2022-08-30 06:56:20

我想在同一查询中使用 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) 中按vehicle_no分组)


答案 1

简短的回答

在 --> 数组中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'
        ],
 ]

详细答案

您可能不需要禁用所有严格选项...请看一下关于这个问题的答案


答案 2

这可能是一个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,
],

推荐