2017-01-15 13 views
0

laravel 5.3でrawクエリを実行しようとしています。クエリはシンプルですが、エラーが発生しています。laravel 5.3でrawクエリを実行しています。

table name: users 
columns: id|name|email|phone|created_at|updated_at 

私のクエリ:私はphpMyAdminの上でこれを実行すると

SELECT created_at AS member_since, count(*) as row_count 
FROM users 
GROUP by MONTH(created_at); 

この生のクエリは正常に動作します。しかし、私はlaravelのデータベースクエリビルダーを使用してこれを実行するとエラーが発生します。ここ

SQLSTATE[42000]: Syntax error or access violation: 1055 
'query.users.created_at' isn't in GROUP BY 
SQLSTATE[42000]: Syntax error or access violation: 1055 
    'query.users.created_at' isn't in GROUP BY (SQL: select created_at AS 
    member_since from `users` group by MONTH(created_at)) 

は私のコントローラです:

$users = DB::table('users') 
      ->select(DB::raw('created_at AS member_since', 'count(*) AS row_count')) 
      ->groupBy(DB::raw('MONTH(created_at)')) 
      ->get(); 

return response()->json($users); 

Imが間違っているなら、私を修正してください。生のクエリを実行するためのより良い方法はありますか?

答えて

0

まず、取得しているエラーを理解する必要があります。この質問は次の2つの選択肢

  • 無効にonly_full_group_by設定を持ってこのことを念頭に置いて、今、すべてのことhttps://stackoverflow.com/a/38551525/2474872

    についてです。

  • エラーメッセージによって を提供適応症従ってください:

    $users = DB::table('users') 
        ->select(DB::raw('created_at AS member_since, count(*) AS row_count')) 
        ->groupBy(DB::raw('MONTH(created_at)'), 'created_at') 
        ->get(); 
    

groupBy(DB::raw('MONTH(created_at)'), 'created_at')groupBy(DB::raw('MONTH(created_at), created_at')

することができ
関連する問題