Bonjour à tous,

Si une âme charitable peut m'aider, qu'elle se manifeste

Avant tout, voici le schema simplifié :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
StockRefProduitLabo:
  columns:
    ref_user_id:  { type: integer, primary: true }
    labo_id:      { type: integer, primary: true }
    quantite:     { type: integer }
  relations:
    Labo: { onDelete: RESTRICT, local: labo_id, foreign: id, foreignAlias: Labos }
    RefUserProduit: { onDelete: RESTRICT, local: ref_user_id, foreign: id, foreignAlias: RefsUtilisateurs }
 
RefUserProduit:
  columns:
    produit_id:     { type: integer, notnull: true }
    ref_user:      { type: string(50), notnull: true }
    is_active:     { type: boolean, notnull: true, default: 1 } 
  relations:
    Produit: { onDelete: RESTRICT, local: produit_id, foreign: id, foreignAlias: RefUsers }
   StockProduitLabos:
      class: RefUserProduit
      refClass: StockRefProduitLabo
      local: ref_user_id
      foreign: labo_id
      foreignAlias: RefUserProduits
 
Labo:
  columns:
    numero:         { type: string(50), notnull: true }
    is_active:      { type: boolean, notnull: true, default: 1 }
  relations:
    StockProduitLabos:
      class: RefUserProduit
      refClass: StockRefProduitLabo
      local: labo_id
      foreign: ref_user_id
      foreignAlias: Labos
Ma requête en DQL :
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
$query = Doctrine::getTable('RefUserProduit')
              ->createQuery('r')
              ->addSelect('r.ref_user, s.quantite')
              ->leftJoin('r.StockProduitLabos s')
              ->addWhere('r.produit_id = ?', $request->getParameter('id'))

Et voilà le SQL généré :

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
SELECT r.id AS r__id, r.ref_user AS r__ref_user, 
r2.id AS r2__id, r2.quantite AS r2__quantite 
FROM ref_user_produit r 
LEFT JOIN stock_ref_produit_labo s ON (r.id = s.ref_user_id) 
LEFT JOIN ref_user_produit r2 ON r2.id = s.labo_id 
WHERE (r.produit_id = ?)

Ma question est à la fois simple et compliquée : d'où vient donc cette ligne en mauve ???

Est-ce que je fais une erreur de syntaxe à un niveau quelconque ?