雄辩给出错误,但查询在 phpmyadmin 中执行良好
Posted
技术标签:
【中文标题】雄辩给出错误,但查询在 phpmyadmin 中执行良好【英文标题】:Eloquent giving error but query executes fine in phpmyadmin 【发布时间】:2018-03-31 09:47:56 【问题描述】:我尝试使用 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();
问题不在于如何解决它。我已经通过将“名称”放入 groupBy 来修复它。但问题是为什么查询在 Eloquent 中的执行方式不同?
查看下面的图片以获取帮助。谢谢。
【问题讨论】:
【参考方案1】:这是由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,
【讨论】:
以上是关于雄辩给出错误,但查询在 phpmyadmin 中执行良好的主要内容,如果未能解决你的问题,请参考以下文章
相同的mysql查询在phpmyadmin的不同时间给出不同的结果