|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Expert Confirmé Sénior
![]() ![]() |
Bonjour,
Je suis en train de me faire au fonctionnement du Zend Framework et j'arrive pas à me dépatouiller avec les liaisons entre les tables. J'ai une classe DemandeursLinks : Code PHP :
les colonnes role, demandeur, demande de cette table contiennent les id pour les lier à d'autres tables gérées par les classes Roles, Demandeurs et Demandes. J'aimerais donc qu'au lieu de me renvoyer ces id, il me renvoie directement les objets en question qu'il va chercher dans l'autre classe, mais ce que j'ai fait dans la classe ne marche pas... Quand j'essaie de faire : Il me dit : Citation:
Est-ce qu'au moins ce que je veux faire est possible ? Et si oui comment ? Merci beaucoup
__________________
Tous mes tutos (Java, PHP, SQL-Server, Hardware) - Mon blog anglais JTheque - Site - Forum |
|||
|
00
|
|
|
#2 |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
c'est possible mais ce que je vais te proposer n'a rien à voir avec Zend
tu as la méthode magique "__get" qui permet de gérer le cas où l'attribut n'existe pas regarde là : http://php.net/oop5.overloading
__________________
Modérateur PHP |
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() ![]() |
Donc, il faudrait que je surcharge la méthode get pour pouvoir récupérer mes membres de façon différente.
Le problème c'est que je n'ai pas d'objet DemandeurLink, je reprend directement l'objet que Zend me renvoie. En plus, il me semble quand même que c'est un peu comme utiliser un marteau pour tuer une mouche... Il n'y a rien de plus simple pour faire cela avec Zend ?
__________________
Tous mes tutos (Java, PHP, SQL-Server, Hardware) - Mon blog anglais JTheque - Site - Forum |
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : juillet 2002 Messages : 149 ![]() |
Tu as essayé setFetchMode(Zend_Db::FETCH_OBJ); ?
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() ![]() |
Je viens d'essayer sur mon objet Zend_Db et ça ne change rien.
__________________
Tous mes tutos (Java, PHP, SQL-Server, Hardware) - Mon blog anglais JTheque - Site - Forum |
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : juillet 2002 Messages : 149 ![]() |
Et ca ?
|
|
|
00
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() ![]() |
Ca m'affiche l'id du rôle
__________________
Tous mes tutos (Java, PHP, SQL-Server, Hardware) - Mon blog anglais JTheque - Site - Forum |
|
00
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() ![]() |
Bon, ce que je pourrais faire au pire, c'est surcharger la méthode fetchAll(), parcourir les résultats renvoyés par la méthode parente et rechercher dans les autres classes les résultats, mais je trouve que c'est moche et assez lourd
__________________
Tous mes tutos (Java, PHP, SQL-Server, Hardware) - Mon blog anglais JTheque - Site - Forum |
|
00
|
|
|
#9 | ||||
|
Expert Confirmé Sénior
![]() ![]() |
J'ai résolu mon problème
En fait, Zend Framework ne gère que le Lazy Loading, il aurait donc fallu que je fasse encore des recherches parent enfant pour récupérer ce que je voulais. La solution était donc de passer en Full Loading, je me suis un peu inspiré du code de Julien Pauli pour faire mon propre full Loading. Pour ceux que ça intèresse, voilà comment je gère ça : J'ai créée une nouvelle classe étendant Zend_Db_Table dans laquelle j'ai surchargée la méthode _fetch : Code PHP :
Ensuite, il suffit que j'étende cette classe et que je déclare un tableau $_relations qui définit les liens entre les colonnes et les classes de modèles qu'il faut appeller : Code PHP :
Eh voilà à tous ceux qui m'ont aidé dans ce post.
__________________
Tous mes tutos (Java, PHP, SQL-Server, Hardware) - Mon blog anglais JTheque - Site - Forum |
||||
|
00
|
Copyright © 2000-2012 - www.developpez.com