2017-10-19 37 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,