2017-08-11 5 views
0

J'ai un tableau croisé dynamique dans Laravel (produit_de_commande) qui enregistre chaque produit qui appartient à une commande.Laravel groupPar colonne et ajouter des totaux en fonction de la quantité Colonne

J'utilise les colonnes suivantes "order_id, product_id, qté"

Si je

DB::table('order_product')->selectRaw('*, count(*)')->groupBy('product_id'); 

Je reçois le compte de chaque occurrence de produit.

Certains produits, cependant, se produisent plus d'une fois dans un ordre. Comment puis-je multiplier chaque produit par la colonne q puis grouper par l'ID de produit et les compter ensemble? À la fin, j'ai besoin d'obtenir le nombre total de toutes les commandes groupées par produit.

EDIT Voilà ma table de base de données

enter image description here

sortie souhaitée:

Produit (ID = 30) se produit fois dans la table, de 5 ordres différents. Le total du produit multiplié par les colonnes de quantité serait égal à

+0

S'il vous plaît publier la structure de la table, les données de l'échantillon et la sortie désirée – lad2025

+0

@ lad2025 modifié le message. regarde. –

Répondre

0

Je pense que vous voulez agréger en utilisant la somme du champ de quantité, pour chaque produit. Par conséquent, les éléments suivants devraient fonctionner:

DB::table('order_product')->selectRaw('product_id, SUM(qty)')->groupBy('product_id'); 

Cela correspondrait à la requête MySQL brute suivante:

SELECT 
    product_id, 
    SUM(qty) 
FROM order_product 
GROUP BY 
    product_id