|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Futur Membre du Club
![]() Inscription : février 2009 Messages : 42 ![]() |
Salut à tous,
J'ai une classe nommée CorpUserRememberKeyTable par Doctrine qui contient : Code :
et dans apps/frontend/lib/myUser.class.php j'ai : Code :
Thx |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Quel est la table CorpUser ?
Quel sont les deux structures ? Quel sont leurs relations ? As-tu pensé à aller voir du côté des plugins ? Dans la salle plugin de symfony tu as un sujet épinglé avec la liste des plugins les plus utilisés ici dont notamment sfDoctrineGuard qui gère tous l'aspect sécurité, user et droits. Je pense qu'avant de partir sur un code propriétaire tu aurais intérêt à y jeter un œil.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#3 | ||||||||||||
|
Futur Membre du Club
![]() Inscription : février 2009 Messages : 42 ![]() |
Merci pour ta réponse.
Voici mon schema.yml (en partie) Code :
Je n'avais pas vu cet article, je vais voir, merci. J'ai plus ou moins résolu mon problème, mais j'observe une bizarrerie (selon moi): j'ai ça dans la classe CorpUserTable: Code :
Je l'appelle dans myUser.class.php : Code :
Code :
Code :
Alors que je m'attendais comme en pur PHP à avoir accès à tous les élements des 2 tables de la même façon... Code :
Merci. |
||||||||||||
|
|
00
|
|
|
#4 | ||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 769 ![]() |
Je ne sais pas ce que tu veux dire par 'pur PHP' mais en POO, c'est plutôt le contraire qui me paraitrait étonnant et fautif.
Ta table principale est CorpsUserRememberKey, l'objet associé a un accès direct à ses colonnes : Code :
et cet objet a à son tour accès à ses colonnes : Ce qui serait fautif, c'est de confondre $user->CorpsUser->username et $user->username Bien sûr, rien ne t'empêche d'ajouter un proxy dans CorpsUserRememberKey pour accéder directement au username qui t'intéresse. |
||
|
|
10
|
|
|
#5 | |
|
Futur Membre du Club
![]() Inscription : février 2009 Messages : 42 ![]() |
Merci pour ta réponse.
Citation:
Même en passant par PDO, quand je fais une requête sur 2 tables jointes, en demandant un array ou un objet, j'ai accès à tous les éléments voulus sur le même niveau, d'où ma surprise... Mais c'est sans doute à cause d'un défaut de "bonne pratique" ? La manière de faire de Doctrine est effectivement bien meilleure. Il suffisait de la connaître, j'ai rien trouvé de très explicite dans la doc. |
|
|
|
00
|
|
|
#6 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
En effet, Doctrine hydrate le retour, par défaut, en objet.
Normalement du devrait accéder par : qui est la syntaxe normal en objet. Tu as le possibilité de changer l'hydratation (cf documentation doctrine sur l'hydratation) et de récupérer un tableau plat comme en "php pure". Hydrater sur un array plat ou hiérarchique en fonction de tes besoins présente l'avantage d'être plus rapide et moins lourd en mémoire. Par contre tu perds la liaison avec le modèle objet et donc toutes les fonctionnalités qui vont avec, notamment la partie modification et sauvegarde des données. Ton schema est correcte et pour une fois je n'ai rien à y redire. Je pense malgré tous que, pour ta formation personnel, il serait intéressant, après avoir cherché et fais fonctionner ton système, d'explorer la manière dont sfDoctrineGuardPlugin procédé je suis sur que cela ne peut qu'être instructif. Vu le nombre de sites qui l'exploite, cela ne doit pas être complètement nul.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
10
|
|
|
#7 | |||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 769 ![]() |
Citation:
Pour autant que je sache, un objet PDO obtenu après requête encapsule une ligne de résultats tandis qu'un objet Doctrine encapsule une instance (complète) de ton modèle conceptuel. Pour PDO, c'est un peu l'équivalent de ce que l'on a en appelant Code :
Doctrine résoud ce problème en faisant son travail d'ORM, il te fournit donc un objet Utilisateur complet dans lequel est accessible la liste de ses Adresses, chaque Adresse est elle-même un objet qui donne accès à ses NumérosDeTéléphone et tu enrichis tes classes à ta sauce avec toute méthode te semblant utile. La "bonne pratique" dépend donc du contexte et de la sémantique des entités manipulées. Et en effet, la doc de Symfony est... hum... améliorable
|
|||
|
|
10
|
|
|
#8 |
|
Futur Membre du Club
![]() Inscription : février 2009 Messages : 42 ![]() |
@Herode
Génial, bien compris. @Michel Rotta Oui ça marche aussi, et c'est plus joli... Merci
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com