Laravel Éloquent: la Meilleure Façon de Calculer le Prix Total
Im la construction d'un simple d'acheter et de vendre de l'application avec Laravel 5.1. Chaque Modèle d'achat a beaucoup de BuyDetail qui stocke du produit acheté, de la quantité et de buy_price. J'ai appliquer la relation entre la table sur le Modèle.
class Buy extends Model
{
#Eloquent relationships
public function supplier()
{
return $this->belongsTo('App\Supplier');
}
public function buyDetails()
{
return $this->hasMany('App\BuyDetail');
}
}
Je voudrais calculer le prix total pour chaque Achat. Quelle est la meilleure façon de calculer le prix total à l'aide Éloquent ORM?
pour l'instant, je viens de la mettre en œuvre comme ceci:
@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
- Est l'orthographe correcte "Fournisseur"?
- merci pour la correction
Vous devez vous connecter pour publier un commentaire.
Cela peut être fait dans (au moins) 2 façons.
À l'aide de pure Éloquent modèle logique:
Le seul problème ici est qu'il a besoin de récupérer toutes les acheter détails de la base de données, mais c'est quelque chose que vous avez besoin de chercher de toute façon pour afficher les détails dans la vue.
Si vous voulais éviter d'aller chercher de la relation de la base de données vous pouvez créer manuellement la requête:
Je réalise une réponse a déjà été accepté, mais juste pensé que je voudrais ajouter ma propre détaillant une autre approche.
Personnellement, j'aime bien mettre des de la “somme” des méthodes comme celles-ci sur une collection personnalisée de classes. Donc, si j'ai un
Buy
modèle qui peut avoir beaucoup deBuyDetail
modèles, alors je mettrais ungetTotal()
méthode sur monBuyDetailCollection
méthode comme ceci:Je peux ajouter ceci à la
BuyDetail
modèle:Et utiliser mon
getTotal()
méthode où jamais j'ai besoin maintenant: