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