Bonjour à tous,
Voilà je cherche désespérement à convertir la requête suivante en DQL :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 SELECT r.ref_user, IFNULL(sl.stock_labos, 0) AS total_labo, IFNULL(sb.stock_bunkers, 0) AS total_bunker, (IFNULL(sl.stock_labos, 0) + IFNULL(sb.stock_bunkers, 0) ) AS stock_total FROM ref_user_produit r LEFT JOIN ( SELECT ref_user_id, SUM(quantite) AS stock_labos FROM stock_ref_produit_labo GROUP BY ref_user_id ) AS sl ON r.id = sl.ref_user_id LEFT JOIN ( SELECT ref_user_id, SUM(quantite) AS stock_bunkers FROM stock_ref_produit_bunker GROUP BY ref_user_id ) AS sb ON r.id = sb.ref_user_id WHERE ( r.produit_id =1 )
Le plus proche que j'ai réussi à obtenir est le code suivant, mais il comporte une erreur de taille : si le nombre de lignes diffère entre les 2 tables jointes, j'obtiens une erreur de stock.
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $query = Doctrine::getTable('RefUserProduit') ->createQuery('r') ->select('r.ref_user, SUM(sl.quantite) AS stock_labo, SUM(sb.quantite) AS stock_bunker') ->leftJoin('r.StockRefProduitLabo sl') ->leftJoin('r.StockRefProduitBunker sb') ->addWhere('r.produit_id = ?', $request->getParameter('id')) ->addGroupBy('r.ref_user') ;
L'autre idée que j'ai eue serait de créer les méthodes getStockLabos et getStockBunker, renvoyant leur SUM respectif et de les intégrer au DQL, mais je ne vois pas trop comment c'est possible ...
Si un gourou de doctrine venait à passer dans le coin pour m'aiguiller
Mais j'en appelle aussi à toutes les bonnes volontés, d'avance merci![]()
Partager