Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
je débute avec Zend depuis hier et me forme pour l'instant à l'aide de petits tutoriaux. jusque là tout se passe bien sauf que je ne parviens pas visiblement à récupérer d'informations avec l'instruction findDependentRowset entre deux tables liées.
Je travaille actuellement sur le tutoriel suivant -> http://www.reseaucerta.org/cotecours/ccMVC/index.html
Je ne parviens pas à afficher la liste de mes étudiants affectés à un diplome (20.3. Relation Un-à-Plusieurs (One to Many))
Voici mes sources:
Models
<?php class Diplome extends Zend_Db_Table_Abstract { protected $_name = 'diplome'; protected $_primary = 'id'; protected $_rowClass = 'DiplomeRow'; protected $_referenceMap = array( 'Responsable' => array( 'refColumns' => 'id', 'refTableClass' => 'Enseignant', 'columns' => 'idResponsable', )); } ?>
<?php class DiplomeRow extends Zend_Db_Table_Row_Abstract { public function getInscriptions(){ return $this->findDependentRowset('Inscription'); } public function getResponsable() { return $this->findParentRow('Enseignant'); } public function getNbInscrits(){ // TODO return -1; } } ?>
<?php class Inscription extends Zend_Db_Table_Abstract { protected $_name = 'inscription'; protected $_rowClass = 'InscriptionRow'; protected $_referenceMap = array( 'Diplome' => array( 'refColumns' => array('id') 'refTableClass' => 'Diplome', 'columns' => array('idDiplome'), ), 'Etudiant' => array( 'refColumns' => array('id') 'refTableClass' => 'Etudiant', 'columns' => array('idEtudiant'), ) ); } ?>
<?php class InscriptionRow extends Zend_Db_Table_Row_Abstract { // private $idEtudiant; // private $idDiplome; // private $noteExamen; // private $nbSemStage; public function estRecu() { // TODO return false; } public function getNomEtudiant() { return $this->findParentRow('Etudiant')->nom; } public function getLibDiplome() { return $this->findParentRow('Diplome')->libelle; } } ?>
Controlers
class ResultatsController extends Zend_Controller_Action { public function init() { } public function preDispatch() { } public function indexAction() { $registry = Zend_Registry::getInstance(); $db = $registry->get('db'); $d = new Diplome($db); $select = $d->select(); $this->view->diplomes=$d->fetchAll($select); $this->render(); } public function postDispatch() { } ... public function voiretudiantsAction() { $registry = Zend_Registry::getInstance(); $db = $registry->get('db'); $idDplome=$this->_getParam('diplome', 1); $this->view->iddip=$idDplome; $dt = new Diplome($db); $diplome = $dt->find($idDplome)->current(); $inscriptions=$diplome->getInscriptions(); $this->view->inscriptions=$inscriptions; $this->view->diplome=$diplome->libelle; $this->render(); } }
Views
<table> <caption>Les étudiants inscrits au diplôme <?=$this->diplome ?></caption> <thead> <tr> <th>Etudiant</th> <th>Stage <br>Nombre de <br>semaines réalisé</th> <th>note</th> <th>reçu</th> </tr> </thead> <tbody> <?php foreach ($this->inscriptions as $inscription) { echo '<tr><td>' . $inscription->getNomEtudiant() . '</td>'; echo ' <td>' . $inscription->nbSemainesStage .'</td>'; echo '<td>'. $inscription->note .' </td>'; echo '<td>'.$inscription->estRecu() ." </td></tr>\n"; } ?> </tbody> </table>
Le problême rencontré est que rien ne s'affiche sur ma page. J'ai testé différents éléments et je sais que je récupère bien le diplome mais visiblement pas les inscriptions qui lui sont liées. si je mets $inscriptions=$diplome->getInscriptions(); en commentaire la pages s'affiche (évidemment sans la liste des inscriptions mais avec les information pour le diplome).
Quelqu'un aurait-il une idée ?
Dernière modification par matdev (31-03-2009 12:13:00)
Hors ligne
C'est ok, je viens de trouver la réponse seul et c'était un simple oubli de virgules dans mon $_referenceMap du model Inscription.
Hors ligne