recuperation data sur une query complexe
Bonjour a tous,
J'ai encore un peu de mal a comprendre comment fonctionne Doctrine.
j'ai une requete quelque peu complexe:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $q=$this->createQuery('s')
->select('s.id,u.id, c.id, f.id, f1.name as formation, f1.periodicite,
MAX(fu.date) as datemax,
IF(
(CURRENT_DATE() <= TIMESTAMPADD(MONTH, f1.periodicite, max(fu.date)))
||
(f1.periodicite=0 && MAX(fu.date) IS NOT NULL),
0,
1
) as result')
->leftJoin('s.classifications u')
->leftJoin('u.class c')
->leftJoin('c.list_formation f')
->leftJoin('f.formation f1')
->leftJoin('s.formations fu ON s.id=fu.user_id AND fu.formation_id=f1.id')
->where('s.id=?',$user_id)
->groupBy('s.id, u.id, c.id, f.id, f1.name')
;
$data=$q->execute() |
je voudrait récuperer dans un foreach
quelque chose du type:
Code:
1 2 3 4 5
|
foreach($data as $line)
{
echo $line->getFormation().' '.$line->getDatemax().' '.$line->getResult().'<br>';
} |
pour le moment ce code ne m'affiche que la premiere ligne.
Hors le code SQL m'affiche bien la totalité de mes enregistrements.
recupercation champ custom
j'ai une requet DQL qui me donne un SQL correcte:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| $q=$this->createQuery('a')
->select('a.*,sf.*,se.*,ga.id,a1.*,hi1.*')
->addSelect('hi2.total as prevtotal')
->leftJoin('a.users sf')
->leftJoin('sf.Costcenter se')
->leftJoin('sf.groupassets ga')
->leftJoin('ga.listGroupAsset a1 ON a1.groupasset_id=ga.id AND a1.type="email"')
->innerJoin('a1.historic hi1 ON hi1.asset_id=a1.id AND hi1.datestate="'.$datelimit.'"')
->leftJoin('a1.historic hi2 ON hi2.asset_id=a1.id AND hi2.datestate="'.$predate.'"')
->where('a.id=?',$site->getId())
->andWhere('sf.is_active=true')
->orderBy('se.business, se.name, sf.last_name, sf.first_name') |
le souci est comment recuperer mon champ prevTotal ?