|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Mickael Étudiant Inscription : novembre 2008 Messages : 66 ![]() |
Bonjour,
Voici juste un bout d'un schema.yml pour illustrer mon problème: Code :
Si je fais Je récupère une instance de Devis, que l'enregistrement existe or pas, ou je voudrais effectuer une condition sur l'existence ou non de ce devis, or il n'y a pas de fonction hasDevis() ou autre, comment puis-je faire ? Merci par avance, Cordialement. |
||
|
00
|
|
|
#2 | ||
|
Membre habitué
![]() Ludovic Étudiant Inscription : janvier 2011 Messages : 124 ![]() |
Une comparaison avec NULL ne fonctionne pas ?
Si oui, tu peux créer une méthode hasDevis() dans la classe Commande : Code :
|
||
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Mickael Étudiant Inscription : novembre 2008 Messages : 66 ![]() |
C'est là qu'est le problème, dans tous les cas il me retourne un objet Devis, même si je n'est pas d'enregistrement j'ai quand même le droit à un objet mais vide, et donc pas équivalent à null.
Pour pallier à mon problème je suis présentement obliger de faire une comparaison avec la valeur created_at, pour voir si l'enregistrement est un enregistrement qui à bien été enregistré à un moment donné, c'est pas très propre à mon sens mais j'ai le résultat escompté. N'y aurait-il pas une solution native, plus propre ?? Merci de ta réponse rapide, bien qu'elle ne m'aide pas vraiment |
|
00
|
|
|
#4 |
|
Invité de passage
![]() Étudiant Inscription : mai 2011 Messages : 8 ![]() |
effectivement il te retournera toujours un objet Devis, même vide si il n'y en a pas
l'astuce réside dans le fait qu'un objet n'a pas d'Id tant qu'il n'est pas enregistrer Donc, si tu récupère un objet vide, donc qui n'existe pas, son Id est null, mais si par contre tu récupère un objet qui lui existe bien l'Id aura forcement une valeur Il te suffit donc de faire Il y a peut être encore plus propre, mais ça sera en effet plus pratique que de comparer les dates :p Il faut simplement que tu fasses attention si tu réalise des traitements spéciaux dans tes fonctions (notamment quand tu créer des objets). En effet, si tu créer un objet dans une fonction et que tu veux travailler avec dans cette même fonction, il n'aura pas d'attribut Id avant que tu appel la fonction "save()" sur cet objet ! =) je ne sais pas pourquoi, mais j'ai l'impression de ne pas avoir été très clair ...
|
|
|
00
|
|
|
#5 | ||
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Schéma revu à ma façon :
Code :
Important, il ne faut jamais utiliser de nom d'entité (table) qui se termine par un "s". D'où l'absence du "s" pour l'entité "devi" et son apparition en tant que nom du liens depuis l'autre côté de la relation "foreignAlias" qui permet de prévenir que le retour est une collection (Doctrine_Collection) et non pas un enregistrement. Ta méthode getDevis() te retourne donc systèmatiquement un Doctrine_Collection qui peut contenir de 0 à une infinité d'objet "Devi" (sans le "s" ceux là). Tu as une méthode count sur la collection qui retourne le nombre d'éléments dans la collection. A partir de là, je pense que tu dois bien voir comment récupérer ta donnée...
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
||
|
00
|
Copyright © 2000-2012 - www.developpez.com