Je suppose que séance est lié à activité.
Je suppose que la relation du côté d'activité est appelée "seances".
Donc pour récupérer les seances depuis (le code est dans l'objet activité) une activité tu vas faire un
$seances = $this->getSeances();
qui retourne la liste des séances pour cette activité (un Doctrine_Collection).
Pour avoir le nombre de séance :
$nbSeances = count( $this->getSeances() );
attention, si la requête d'origine ne retourne pas les activités ET les séances, tu vas avoir une requête supplémentaire par ligne dans le sélect, ce qui peut faire beaucoup.
En y réfléchissant, tu devrais aussi pouvoir un peu simplifier (compliquer) la chose.
En effet, le sfWidgetFormSelectCheckbox attend un tableau (options choices).. Il est peut-être plus simple de faire le tableau "à la main".
Une méthode de ce type
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #actionTable.class.php (non vérifié)
static function getActionSeanceNb()
{
$datas = self::getInstance()->
createQuery('a')->
innerJoin('a.Seances s')->
select('a.id, a.nom, count(s.id) seance')->
orderBy('a.nom')->
execute( array(), Doctrine_Core::HYDRATE_ARRAY_SHALLOW );
$ret = array();
foreach ($datas as $action)
{
$ret[ $action['a_id'] ] = $action['a_nom'] . ' (' . $action['s_seance'] . ')';
}
return $ret;
} |
Je ne suis pas très sur des noms renvoyé par l'hydratation array_shallow, a vérifier. Et je ne suis pas plus sur de la syntaxe pour select() pour donner un nom à count, a vérifier. Mais en gros l'idée y est. Et le tout en une requête. Dommage que l'on ne puisse directement sortir le tableau.
Partager