Bonjour,
je suis entrain d'apprendre zend 1.12 via le learning du site (http://www.framework.zend.com/manual...ate-model.html)
Maintenant j'aimerai faire une mini app avec une relation ONE TO MANY.
J'ai donc créé 2 tables
auteur (id,name)
book (id,title,auteur_id) qui contient une foreign key
je crée donc les modèles associés ainsi que les 2 classes héritant de Zend_Db_Table_Abstract
voici pour book
et auteur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 protected $_name = 'book'; protected $_referenceMap = array( 'Auteur' => array( 'columns' => 'auteur_id', 'refTableClass' => 'Auteur', 'refColumns' => 'id' ) );
Je pense être dans le bon jusque maintenant (d'après http://framework.zend.com/manual/1.1...tionships.html).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 protected $_name = 'auteur'; protected $_dependentTables = array('Book');
J'aimerai récupérer les livres avec leur auteur associé mais j'ai une erreur:
Message: File "Auteur.php" does not exist or class "Auteur" was not found in the file .
J'ai donc une méthode dans ma classe bookMapper:
je fais appelle à cette méthode dans mon controller de cette façon:
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 public function findAuteur($id, Application_Model_Book $book) { $result = $this->getDbTable()->find($id); if (0 == count($result)) { return; } $row = $result->current(); //hydratation de l'objet book $book->setId($row->id) ->setTitle($row->title); //Utilisation d'une methode pour récupérer l'auteur u livre $rowAuteur=$row->findParentRow('Auteur'); $auteur= new Application_Model_Auteur(); //hydratation de l'objet Auteur $auteur->setId($rowAuteur->id) ->setName($rowAuteur->name); //Attacher l'auteur à l'article $book->setAuteur($auteur); return $book; }
Merci de votre aide parce que je dois passer un test prochainement qui consiste à créer une mini appli sur 2 tables en relation 1,n où il faut utiliser un formulaire pour l'ajout modif ainsi que d'afficher une liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public function indexAction() { $book = new Application_Model_BookMapper(); $this->view->entries = $book->findAuteur(1,new Application_Model_Book()); }
Pour info il s'agit de zend 1.12
Si vous avez un bon tuto ou autre qui m'aiderait à avancer![]()
Partager