IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Doctrine2 PHP Discussion :

Test de l'existence d'une relation 1-0..1


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 6
    Par défaut Test de l'existence d'une relation 1-0..1
    Bonjour à tous,
    Je m'arrache les cheveux sur un problème, j'ai une relation où un parent est lié à 1 ou 0 enfant.

    Lorsque je souhaite tester si un parent a un enfant de cette façon :
    if ($parent->getEnfant() != NULL)

    cela ne marche pas et getEnfant() me renvoit le proxy de l'entity Enfant.


    Je ne vois pas comment gérer ce cas si quelqu'un peut m'aider

    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Par défaut
    Je n'ai pas eu l'occasion ce genre de relation avec Doctrine2, mais ça m'étonne qu'il n'y ait pas de moyen simple de tester ça. Que donne un var_dump($parent->getEnfant()) stp ?

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Par défaut
    Un parent ne peux pas avoir plusieurs enfants ?

    Je ne comprends pas trop ton problème en fait.

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    pourquoi pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($parent->getEnfant()->getId())
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!$parent->getEnfant() instanceof My\Bundle\Proxy)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 6
    Par défaut
    Alors $parent->getEnfant()->getId() renvoit une erreur et instanceof renvoie la classe proxy d'Enfant.

    Dans doctrine1 il y avait la une méthode exists ou relatedExists qui permet de le savoir.

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #My\Bundle\Entity\Parent
    public function hasEnfant(){
     return (bool) $this->enfant;
    }
    Doctrine1 va décidement bien nous manquer!

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Par défaut
    J'ai jamais eu ce genre de problème de mon côté en utilisant MySQL.

    Si je prend ton exemple, t'as une relation entre le Parent et l'Enfant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    parent
    id
    nom
    prenom
    enfant_id
    
    enfant
    id
    nom
    prenom
    Quoi que tu fasse, si tu n'affecte pas d'enfant au parent, MySQL te retournera une erreur, si Doctrine ne le fait pas avant.
    Par contre, si on veut pouvoir ne pas affecter d'enfant au parent, on indique en MySQL que le champ enfant_id peut être null.

    Du coup quand tu fais $parent->getEnfant(), il te retournera NULL si le parent n'a pas d'enfant.

    Il n'y a pas plus simple comme exemple de relation, même si ce n'est pas très logique, un ManyToMany serait plus approprié

Discussions similaires

  1. [XL-2000] Test de l'existence d'une zone nommée
    Par crashtib dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2010, 19h24
  2. [MySQL] Vérifier simplement l'existence d'une relation
    Par Invité dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/03/2010, 21h12
  3. Echec du test de l'existance d'une classe
    Par vinzzzz dans le forum Général Java
    Réponses: 3
    Dernier message: 08/07/2009, 09h25
  4. test de l'existence d'une session ?
    Par MorganStern dans le forum Langage
    Réponses: 2
    Dernier message: 02/10/2007, 11h13
  5. [VBA-E]Test de l'existence d'une propriété
    Par extase dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/01/2007, 19h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo