2016-12-02 6 views
1

ich ein Modell habe SettlementEntries, die eine Beziehung zu einer Untertabelle hat return $this->hasMany('App\Online', 'entry_id');Laravel Summe eine Sammlung mit mehreren Artikeln

Beim Versuch, einen einzigen Eintrag zu holen ich in der Lage bin meine Sammlung zu fassen, wie im Beispiel unten.

$item = SettlementEntries::find($id); 
$item->Online->sum('field'); // returns the correct sum 

Mein Problem beginnt, wenn die $id ein Array ist, so mein Ergebnis enthält 2 SettlementEntries.

$items = SettlementEntries::find($ids); 
$items->Online->sum('field'); <- returns zero 

Wie lautet die richtige Methode zum Abrufen dieser Summen?

+0

Verwendung 'foreach' einströmig zu arbeiten – ATIKON

+0

ich nee nicht die Summe aus einem einzigen Eintrag, ich brauche sie kombiniert. – DavidCandreva

Antwort

1

Laravels Collection macht dies sehr einfach, indem Punktnotation verwendet wird. Einige Beispiele here.

Der einfache Weg (Punktnotation):

$sum = $items->sum('Online.field'); 

Deutlichere (Rückruf):

Oder, wenn Sie wollen mehr explizit sein, z.B. Bedingungen/Filter verwenden: Closure a bieten:

$sum = $items->sum(function($item) { 
    return $item->Online->sum('field'); 
}); 
+0

Das funktioniert, aber es ist nicht möglich, ohne sie zu durchlaufen? – DavidCandreva

+0

Eigentlich ist es. Siehe meine aktualisierte Antwort. –

+0

'$ sum = $ items-> sum ('Online.field');' gibt immer 0 – DavidCandreva