2017-10-19 67 views
2

我试图使用groupBy将uni_id的所有视图和它们的创建日期分组,以便我可以生成报告。但我看到Laravel Eloquent正在产生错误。但是,当我在phpmyadmin中执行相同的查询时,它会显示我的数据。雄辩如何处理其查询?雄辩的给出错误,但查询在phpmyadmin中执行正常

我使用Laravel 5.2

这是我试图通过雄辩运行查询:

$data = UniversityView:: 
    groupBy('created_at', 'uni_id') 
    ->select('uni_id', DB::raw('count(*) as views'), 'name', 'created_at') 
    ->get(); 

的问题不是如何解决它。我已经通过在groupBy中加入'name'来解决它。但问题是为什么查询通过Eloquent以不同的方式执行?

检查下面的图像寻求帮助。谢谢。

enter image description here enter image description here

回答

2

这是由MySQL's strict mode引起的,它是在你的连接参数数组中config/database.php指定的,这就是为什么当你直接phpMyAdmin执行它,它是工作,因为phpMyAdmin使用不同的连接参数。

您可以通过修改config/database.php连接阵列来部分禁用它,以允许此类groupsBy。这样做在这样:

添加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,