2017-07-31 7 views
3

ほとんどのチケットassigned_toでアレンジされた譲受人の名前を表示しようとしています。Laravel 5.4:雄弁でカウント(列)で注文するには?

$accesses = Access::where('state','=','Assigned'); 

$all = Report::where('state', '=', 'Assigned') 
       ->union($accesses) 
       ->orderBy('count(assigned_to)') //THIS IS WRONG 
       ->get(); 
+0

のようにしてみカウントするように 'DB ::生()' laravelのを使用します。 – aldrin27

+0

あなたの答えを親切に明確にしますか? –

+0

例: ' - > orderBy(DB :: raw( 'query here'))' – aldrin27

答えて

0

これを試してください: -

$all = Report::where('state', '=', 'Assigned') 
      ->select(DB::raw('count(reports.assigned_to) as assigned_to')) 
      ->union($accesses) 
      ->orderBy('assignedto','DESC') 
      ->get(); 
+0

の結果配列/コレクションを投稿してください。ただし、レポートテーブルのassigned_toしかカウントされません。 union'dテーブルのassigned_toを数えます。 –

2

あなたが得るためにDB::rawを使用する必要があり、それ

$all = Report::where('state', '=', 'Assigned') 
      ->select(DB::raw('count(reports.assigned_to) as assigned_to')) 
      ->union($accesses) 
      ->orderBy('assigned_to','DESC') 
      ->get(); 
+2

または 'selectRaw'を使用することができます – fubar

+0

しかし、それはレポートテーブルのassigned_toを数えます、私はunion'dテーブルのassigned_toを数えることができるようにしたいと思います。 –

+0

あなたが割り当てられている通りにクエリを渡します。ここで同じことを行います – Exprator

0

私はあなたがこれを試すことができると思います。

$all = Report::where('state', '=', 'Assigned') 
      ->select(DB::raw('count(reports.assigned_to) as assigned_to'),DB::raw('count(access.assigned_to) as assigned_to_access')) 
      ->leftjoin('access','report.access.id','=','access.id') 
      ->union($accesses) 
      ->orderBy('assigned_to','DESC') 
      ->orderBy('assigned_to_access','DESC') 
      ->get(); 

希望をこのヘルプあなたのために !!!

1

はあなたのOrderByの内部でこの

$accesses = Access::where('state','=','Assigned'); 

$all = Report::where('state', '=', 'Assigned') 
       ->union($accesses) 
       ->orderBy(DB::raw('count(assigned_to)'),'DESC') 
       ->get(); 
+0

@Grantはこれを試しましたか? –