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

我想在同一查询中使用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进行加载)


郎朗坤
浏览 512回答 3
3回答

RISEBY

简短答案在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'        ], ]详细答案您可能不需要禁用所有严格的选项。有关此问题,请查看此答案。

开满天机

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

婷婷同学_

每当雄辩地使用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')在配置文件中禁用严格模式也是一种不好的做法。这样做可能会导致损坏的数据进入数据库,例如无效的日期而没有任何警告,除非绝对必要,否则请勿这样做。
打开App,查看更多内容
随时随地看视频慕课网APP