2017-12-29 53 views
1

グループ化されたすべての行を数えようとしていますが、できるだけEloquentでそれを行う方法がありません。グループ化されたすべての行をEloquentでカウントする

私のクエリは次のようになります。

DB::select(DB::raw("SELECT COUNT(*) as total FROM (SELECT date FROM `" . (new Report)->getTable() . "` WHERE project_id = " . ((int) $this->project->id) . " GROUP BY `date`) as t1"))[0]->total 

それは雄弁でこれを達成することが可能である、または少なくともPHPを行います。今、私は生のデータベースクエリを使用しているのよう

SELECT COUNT(*) FROM (SELECT date FROM `reports` WHERE project_id = X GROUP BY `date`) as t1 

"コール"はもっとかわいいですか?

+0

を - GROUPBYのかもしれ後')(>数仕事、あなたは試しましたか? –

答えて

1

あなたはQuery Builderを使用することができます。

私は、この(私はあなたがそのサブクエリを必要としないと思う)に沿って何かをしたい: `追加

Report::where('project_id', $this->project->id) 
    ->count(DB::raw('DISTINCT date')); 
+0

動作しません。 'groupBy'から返された行の数はカウントされません。 – Marwelln

+0

@Marwelln編集: –

+0

ありがとうございました。より洗練された方法。 – Marwelln

関連する問題