我试图使用groupBy按uni_id分组所有视图及其创建日期,以便生成报告。但我看到Laravel Eloquent正在产生错误。但是,当我在phpmyadmin中执行相同的查询时,它会显示数据。 Eloquent如何处理其查询?
我正在使用Laravel 5.2
这是我试图通过Eloquent运行的查询:
$data = UniversityView::
groupBy('created_at', 'uni_id')
->select('uni_id', DB::raw('count(*) as views'), 'name', 'created_at')
->get();
问题不在于如何修复它。我已经通过输入' name'在groupBy中。但问题是为什么查询通过Eloquent以不同方式执行?
检查以下图片以获取帮助。感谢。
答案 0 :(得分:2)
这是由MySQL's strict mode引起的,它是在config/database.php
的连接参数数组中指定的,这就是为什么当你直接在phpMyAdmin
执行时它正常工作,因为phpMyAdmin
使用不同的连接参数。
您可以通过修改config/database.php
连接数组来部分禁用它,以允许此类组。这样做是这样的:
添加modes
数组仅禁用此规则:
'strict' => true,
'modes' => ['STRICT_TRANS_TABLES',
'NO_ZERO_IN_DATE',
'NO_ZERO_DATE',
'ERROR_FOR_DIVISION_BY_ZERO',
'NO_AUTO_CREATE_USER',
'NO_ENGINE_SUBSTITUTION'],
或者如果你知道你在做什么,你可以直接做(我不会这样做):
'strict' => false,