Laravel Eloquent: Beste Weg, um zu Berechnen Gesamtpreis
Im Gebäude ein einfaches kaufen und verkaufen-Anwendung mit Laravel 5.1. Kaufen je Modell hat viele BuyDetail die Läden gekauften Artikel Menge und buy_price. Ich habe die Umsetzung der Beziehung zwischen der Tabelle auf dem Modell.
class Buy extends Model
{
#Eloquent relationships
public function supplier()
{
return $this->belongsTo('App\Supplier');
}
public function buyDetails()
{
return $this->hasMany('App\BuyDetail');
}
}
Ich würde gerne zur Berechnung des Gesamtpreises für jede Kaufen. Was ist der beste Weg zur Berechnung des Gesamtpreises mit Eloquent ORM?
für die ich jetzt einfach umsetzen wie diese:
@foreach($buys as $key => $value)
<?php
$total = 0;
?>
@foreach($value->buyDetails as $k => $bD)
<?php
$total += ($bD['buy_price']*$bD['qty']);
?>
@endforeach
<tr>
<td>{{$value->ref_number}}</td>
<td>{{$value->suplier->name}}</td>
<td>{{$value->created_at}}</td>
<td>{{$value->buyDetails->count()}}</td>
<td>{{$total}}</td>
<td>
<a href="" class="btn btn-default btn-sm" title="show">Detail</a>
<a href="" class="btn btn-primary btn-sm" title="edit">Edit</a>
<a href="" class="btn btn-danger btn-sm" title="delete">Delete</a>
</td>
</tr>
@endforeach
- Ist die korrekte Schreibweise "Lieferanten"?
- danke für die Korrektur
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann dies auf (mindestens) 2 Möglichkeiten.
Verwendung von reinem Eloquent Modell-Logik:
Das einzige Problem hier ist, dass es braucht, zu Holen alle kaufen details aus der Datenbank, aber das ist etwas, das Sie brauchen, zu Holen sowieso zur Anzeige von details in der Ansicht.
Wenn Sie wollten, um zu vermeiden, Holen Sie den Bezug von der Datenbank, die Sie bauen könnten, die Abfrage manuell:
Merke ich eine Antwort schon akzeptiert, aber nur dachte, ich würde meine eigenen Detaillierung anderen Ansatz.
Persönlich, ich mag es "Aggregat" Methoden wie diese auf benutzerdefinierten collection-Klassen. Also wenn ich einen
Buy
Modell haben kann, dass vieleBuyDetail
Modelle, dann würde ich einegetTotal()
Methode auf meinemBuyDetailCollection
Methode wie diese:Dann kann ich dies zu der
BuyDetail
Modell:Mein
getTotal()
Methode, wo immer ich muss jetzt: