2017-12-29 3 views
1

Ich versuche, alle gruppierten Zeilen zu zählen, aber habe keine Ahnung, wie es geht, wenn möglich, mit Eloquent.Zählen Sie alle gruppierten Zeilen mit Eloquent

Meine Abfrage sieht wie folgt aus:

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

Ab jetzt bin ich mit rohen Datenbankabfragen:

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 

Ist es möglich, dies mit Eloquent, oder zumindest die PHP machen zu erreichen "Anruf" hübscher?

+0

'Hinzufügen -> count()' nach groupBy könnte Arbeit, hast du es versucht? –

Antwort

1

können Sie verwenden die Query Builder:

ich etwas in das tun würde (ich glaube nicht, dass Sie Unterabfrage müssen):

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

Funktioniert nicht. Es zählt nicht, wie viele Zeilen von der 'groupBy' zurückgegeben wurden. – Marwelln

+0

@Marwelln bearbeitet :) –

+0

Danke Kumpel. Viel sauberer. – Marwelln

Verwandte Themen