雄辩给出错误,但查询在phpmyadmin中执行正常

时间:2017-10-19 11:05:06

标签: mysql laravel eloquent

我试图使用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以不同方式执行?

检查以下图片以获取帮助。感谢。

enter image description here enter image description here

1 个答案:

答案 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,