Bonjour.

Décidément, encore une question sur Doctrine. J'ai 3 tables :

Absence(id, ...)
AbsenceHistory(id, date, absence_id, status_id, ...)
AbsenceStatus(id, ...)

Pour faire simple, une absence peut avoir plusieurs statuts et on les
archive via la table AbsenceHistory pour connaitre l'évolution de son statut
au fil du temps. Dans mon backend j'ai la liste des absences et je récupère
le dernier statut et je l'affiche. Maintenant je dois mettre en place le
filtre afin de pouvoir filtrer mes absences sur ce critère. La requête SQL
est plutôt simple mais je ne vois pas comment la mettre en place avec
doctrine.

//AbsenceFormFilter.class.php
...

public function addLastStatusColumnQuery(Doctrine_Query $q, $element,
$value){
    if ($value){
      $alias = $q->getRootAlias();
      $q->innerJoin($alias .'.AbsencesHistory ah')
        ->innerJoin('ah.AbsenceStatus as')
        ->addWhere('as.id = ?', $value);
      return $q;
    }
}

Avec cette requête, la plupart du temps je ne filtre rien, car la plupart
des absences ont au final tous les statuts dans l'historique, alors que moi
je veux n'avoir que le dernier. En gros il faut que je sélectionne pour
chacune des absences le dernier statut en date, avec deux select imbriqués,
mais je ne sais pas faire ici.

*Cyril FLIELLER*

-- 
Vous recevez ce message, car vous êtes abonné au groupe Google 
Groupes Symfony-fr.
Pour envoyer un message à ce groupe, adressez un e-mail 
à [email protected].
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse 
[email protected].
Pour plus d'options, consultez la page de ce groupe : 
http://groups.google.com/group/symfony-fr?hl=fr

Répondre à