雄弁

2016-09-13 25 views
1

でSQLクエリとLaravel 5.2のトラブルは、私は私が達成したい何Laravel 5.2雄弁

で雄弁に問題が生じています。これらの手順を満たしクエリ:

  1. updated_atの> = VALUE1 < = value2の
  2. イベント=値3
  3. GROUPBY = value4
  4. 数updated_atの
  5. 各「グループ」のエントリ(各グループでグループ化された)

出力:最新の各グループのupdated_atの(最大(updated_atの))、各グループのカウント値

私は持っている何遠い:

テーブル 'ログ' 概要:Laravelで

--------------------------- 
| id   | increment | 
----------------------------- 
| key  | varchar(255) | 
----------------------------- 
| video_id | varchar(255) | 
----------------------------- 
| event  | varchar(255) | 
----------------------------- 
| created_at | timestamp | 
----------------------------- 
| updated_at | timestamp | 
----------------------------- 

問合せ:

$showed = self::where('updated_at','>=',$value1)->where('updated_at','<=',$value2)->where('event',$value3)->groupBy($avlue4)->get(); 

私が紛失しているのは、ステップ5と出力結果です。そして私はこれをどのようにLaravelの雄弁に含めることができないのか分かりません。

質問:どのようにこのクエリを達成するための具体的なアイデアはありますか?それが不可能な場合は、どのような措置を取る必要がありますか?

+0

テーブルの定義と出力を共有してください。これはLaravel特有のものではありません。まず、照会しているテーブルに対して適切なSQLクエリが必要です。 – Elias

+0

返される集計列 'count'の式を渡す必要があります。 –

答えて

0

誰も説得力のこの種を構築するとのトラブルを持っている場合:

[0] => [Object, Object], 
[1] => [Object] 

マイクエリ:配列内のエントリのようなものになるように、私のソリューションは、グループにIDによるクエリた

$temp = self::where('updated_at','>=',$month_start) 
     ->where('updated_at','<=',$month_end) 
     ->where('event','completed') 
     ->orWhere('event', 'showed')->get(); 
    $result = $temp->groupBy('id')->toArray();; 
0

あなたは、このような条件の配列を渡すことがあります。

$results = $showed->count(); 

は、コードをテストすることができませんでした:あなたは、この方法でそれを試すことができますエントリをカウントするには

$showed = DB::table('tableNameHere')->where([ 
    ['updated_at', '>=', $month_start], 
    ['updated_at', '<=', $month_end], 
    ['event', '=', 'showed'], 
])->groupBy('id')->get(); 

を。これがうまくいけば教えてください。

+0

結果の数によって、すべてのエントリの合計が得られます。理想的には、それぞれの「ソートされたグループ」(各「id」グループ)がカウントされ、これらのグループの最新のupdated_at値がこのカウント値と共に返されるということです。 – Mentenyia