为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
郎朗坤 2019-12-27 12:46:40
我想在同一查询中使用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:从*中选择*从(14,15,16)组中的id按Vehicle_no进行加载)
查看完整描述

3 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

简短答案

在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'

        ],

 ]

详细答案

您可能不需要禁用所有严格的选项。有关此问题,请查看此答案。


查看完整回答
反对 回复 2019-12-27
?
开满天机

TA贡献1786条经验 获得超12个赞

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

],


查看完整回答
反对 回复 2019-12-27
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

每当雄辩地使用groupBy时,请始终在select()函数中包括在groupBy函数中使用的列名。


$loadids=explode("#@*",$reciptdet->loading_id);

$loadingdatas=DB::table('loading')->select('vehicle_no')->groupBy('vehicle_no')->whereIn('id',$loadids)->get();//add select('vehicle_no')

在配置文件中禁用严格模式也是一种不好的做法。这样做可能会导致损坏的数据进入数据库,例如无效的日期而没有任何警告,除非绝对必要,否则请勿这样做。


查看完整回答
反对 回复 2019-12-27
  • 3 回答
  • 0 关注
  • 509 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信