【问题标题】:Eloquent giving error but query executes fine in phpmyadmin雄辩给出错误,但查询在 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 中的执行方式不同?

查看下面的图片以获取帮助。谢谢。

【问题讨论】:

    标签: mysql laravel 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,
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-13
      • 2012-01-06
      • 1970-01-01
      • 2017-11-07
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多