Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Je suis en train de parcourir le tutorial sur le fullloading :
http://baptiste-wicht.developpez.com/tu … l-loading/
et je me demandais si on peut mettre en place du full loading avec plusieurs enregistrements liés a un enregistrement (du genre une entete de commande et des lignes de commande).
J'avoue que j'ai juste parcouru, je n'ai pas encore tout lu...
Etant un peu préssé, j'aimerais savoir avant de me plonger dedans si quelqu'un a déjà mis en place le full loading avec ce genre liaisons ?
Dernière modification par bertra (10-03-2008 18:07:59)
Hors ligne
Je reviens sur le Full Loading.
Est ce que la méthode décrite dans le tutoriel est toujours d'actualité ?
J'entends par la : Est ce que ces fonctionnalités ne sont pas implémentées dans les nouvelles versions du ZF ?
Hors ligne
Salut
Apparemment certaines choses ont changés depuis la publication de ce tutorial.
La fonction _fetch a été remplacée par la fonction fetchAll.
Et en plus elle ne retourne plus un tableau mais un rowSet, ce qui fait que la condition
if($this->hasRelations() && is_array($rows) && !empty($rows))
ne sera jamais remplie.
Je suis en train d'essayer d'adapter la solution expliqué dans le tuto, on verra si j'y parviens
Hors ligne
J'ai trouvé un autre tuto intéressant : http://julien-pauli.developpez.com/tuto … l-loading/
Hors ligne
JuTs tu as pas su resoudre le probleme ? car j'utiliser le 1er tuto moi pour mon site, et c'etait bien pratique pour obtenir les données liée par une relation
car en s'moment, j'viens de mettre a jour en 1.5 et ça me donne :
Strict Standards: Declaration of FullModel::_fetch() should be compatible with that of Zend_Db_Table_Abstract::_fetch() in C:\wamp\www\over-book.com\application\models\FullModel.php on line 33
et étrangement le site marche toujours et je peux encore utilisé $object->id_relation->madonnéelié !
Hors ligne
Oui. Avec le tuto indiqué dans mon dernier message.
En tout cas dans mon cas ça me convient
Hors ligne
j'arrive pas a mettre en place le tuto,
J'ai crée mon fichier MyAbstractTables.php dans models de mon application
j'ai essayé de l'inclure comme ceci dans le bootstrap
include "../application/models/MyAbstractTables.php";
mais ça marche tjrs pas. je sais pas trop ou mettre le MyAbstractTables.php a vrai dire.
un exemple de mes models de table :
<?php class Evenement extends Zend_Db_Table { protected $_name = 'evenement'; protected $_dependentTables = array('participer'); protected $_referenceMap = array( 'Etablissement' => array( 'columns' => array('id_etab'), 'refTableClass' => 'Etablissement', 'refColumns' => array('id_etab') ) ); }
si vous avez une idée, elle serait la bienvenue.
Merci
Hors ligne
Tu n'a peut etre pas besoin de charger cette classe a chaque fois .
Concernant ton $_referenceMap, pour columns et refColumns, tu n'a qu'une colonne, tu n'est donc pas obligé de le mettre dans un Array
Tes deux tables existent bien?
et si tu fait un
$ev=new Evenement(); $ev->fetchAll();
Tu as une erreur?
Hors ligne
fblutch a écrit:
un exemple de mes models de table :
Code:
<?php class Evenement extends Zend_Db_Table { protected $_name = 'evenement'; protected $_dependentTables = array('participer'); protected $_referenceMap = array( 'Etablissement' => array( 'columns' => array('id_etab'), 'refTableClass' => 'Etablissement', 'refColumns' => array('id_etab') ) ); }
il faut que ta classe étende ta classe abstraite, pas Zend_Db_Table. Sinon c'est clair que ça va pas fonctionner ;-)
Perso, j'ai placé mes classes dans un répertoire MZ (pour My Zend) qui se trouve dans le répertoire "library". Quant aux classes et dossiers, j'utilise les conventions de zend. Ce qui fait que ma classe abstraite utilisée dans ce cas-là s'appelle MZ_Db_Table_Abstract et se trouve donc dans MZ/Db/Table/Abstract.php . Mais c'est un choix personnel, libre à toi de les placer où tu veux.
Hors ligne
quand je met
class Evenement extends MyAbstractTables
ça me sort une erreur
<b>Notice</b>: Undefined offset: 0 in <b>C:\wamp\www\monsite.com\application\models\MyAbstractTables.php</b> on line <b>6</b><br /> <br /> <b>Catchable fatal error</b>: Argument 1 passed to MyAbstractTables::_searchRelation() must be an array, null given, called in C:\wamp\www\monsite.com\application\models\MyAbstractTables.php on line 6 and defined in <b>C:\wamp\www\monsite.com\application\models\MyAbstractTables.php</b> on line <b>19</b><br />
et à la ligne 6 du code bah on trouve :
$referenceArray = $this->_searchRelation($data[0]);
mais voila je sais pas trop quoi corriger. . .
Dernière modification par fblutch (05-06-2008 12:10:16)
Hors ligne
stf a écrit:
Tu n'a peut etre pas besoin de charger cette classe a chaque fois .
Concernant ton $_referenceMap, pour columns et refColumns, tu n'a qu'une colonne, tu n'est donc pas obligé de le mettre dans un Array
Tes deux tables existent bien?
et si tu fait unCode:
$ev=new Evenement(); $ev->fetchAll();Tu as une erreur?
si je supprime le Array ça me sort l'erreur comme quoi, la méthode attend un tableau
et pour l'erreur c'est le post juste au dessus
et mes 2 tables existent bien je suis en 1.5 au fait (c'est justement a cause de la mise a jour que je dois modifier mon code)
Dernière modification par fblutch (05-06-2008 12:29:28)
Hors ligne
Argument 1 passed to MyAbstractTables::_searchRelation() must be an array, null given
Voilà le problème. Visiblement ta variable $data n'est pas définie (null).
Essaie déjà de faire un fetchAll comme te l'a indiqué stf et regarde si tes données sont bien récupérées
Dernière modification par JuTs (05-06-2008 12:34:33)
Hors ligne
si je fait un fetchAll()
mon controller
$event = new Evenement(); $this->view->evenement = $event->fetchAll('id_etab in (select id_etab from etablissement where ville like "'.MAVILLE.'") and date>now()','date',10);
j'ai l'erreur suivante :
Notice: Undefined offset: 0 in C:\wamp\www\monsite.com\application\models\MyAbstractTables.php on line 6 Catchable fatal error: Argument 1 passed to MyAbstractTables::_searchRelation() must be an array, null given, called in C:\wamp\www\monsite.com\application\models\MyAbstractTables.php on line 6 and defined in C:\wamp\www\monsite.com\application\models\MyAbstractTables.php on line 19
c'est à dire la même. . .
Dernière modification par fblutch (05-06-2008 12:43:11)
Hors ligne
Mets ta méthode _fetch en commentaire, fetchAll utilise cette méthode. Donc forcément puisque tu l'as redéfini il va utiliser la tienne.
Hors ligne
JuTs a écrit:
Mets ta méthode _fetch en commentaire, fetchAll utilise cette méthode. Donc forcément puisque tu l'as redéfini il va utiliser la tienne.
comment ça ?
si je la met en commentaire, le site marche, mais il ne va plus me chercher l'element liée.
Hors ligne
j'ai trouvé ! c'était tout bete ^^
j'ai comparé avec mon ancienne version fullmodel
et en fait, la différence etait les arguments passé en paramètre (qui posé problème) ainsi que la verif de savoir si data été vide (&& !empty($data))
donc maintenant ça marche
apres un repas les idées sont tout de suite plus clair !
Hors ligne
Pages: 1