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 :

Requete de recupération avec multi-jointures


Sujet :

Doctrine2 PHP

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Points : 30
    Points
    30
    Par défaut Requete de recupération avec multi-jointures
    Bonjour tout le monde, j'aimerais récupérer dans mon dépôt des entités en se basant non seulement sur les champs propres à l'entité mais aussi sur les champs des entités en relations avec ladite entité. J'ai pensé à des jointures, j'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public function getSearchList($formvalue) 
    	{
    		$qb = $this->createQueryBuilder('t');
     
    		$qb->join('t.nom', 'n', 'WITH', 'n.nom LIKE :formvalue')
    		   ->join('t.entreprise', 'e', 'WITH', 'e.nom LIKE :formvalue')
    		   ->join('t.personne', 'p', 'WITH', 'p.nom LIKE :formvalue')
    		   ->addSelect('n')
    		   ->addSelect('p')
    		   ->addSelect('e')
    		   ->setParameter('formvalue', $formvalue);
     
    		return $qb->getQuery()->getResult();
    	}
    Ca ne marche pas, aucune erreur déclenchée mais la fonction ne récupère rien du tout, je dois commettre une bêtise quelque part... Si vous avez une idée sur comment y procéder, merci de m'éclairer...

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 81
    Points : 56
    Points
    56
    Par défaut
    essaies de rajouter des "*" autour de ton paramètre comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ->setParameter('formvalue', "*".$formvalue."*");

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Points : 183
    Points
    183
    Par défaut Relations entités
    Bonjour,

    On peut avoir un aperçu du modèle de données, merci

    a+

  4. #4
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    Merci pour vos réponses.
    @vgross : ça ne marche pas même avec cette solution, la page de résultat est retournée mais aucune entité récupérée.

    J'ai 4 entités :
    Tache(id, nomtache, date, entreprise, personne)
    Nomtache(id, nom, taches)
    Entreprise(id, nom, taches, personnes)
    Personne(id, nom, prenom, tache, entreprise)

    Donc le nom de la tache est une entité à part, tout comme pour l'entreprise et la personne.
    Toutes ces entités sont liées à Tache par des relation manytoone. Et moi j'aimerais récupérer à partir du dépôt de Tache...

    Voilà, si vous avez besoin de plus de précisions je suis à votre disposition. Merci beaucoup!

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    la méthode join est un raccourci vers innerJoin donc à priori ta requete récupére toutes les entités taches qui sont strictement liés à un Nomtache, une Entreprise et une Personne dont les attributs nom sont semblables à $formValue .
    Il y a peu de chance qu'une entité réponde à toutes ces conditions, non ?

    Est-ce que tu ne recherches pas plutôt un simple critere Where:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $qb->join('t.nom', 'n')
    		   ->join('t.entreprise', 'e')
    		   ->join('t.personne', 'p')
    		   ->addSelect('n')
    		   ->addSelect('p')
    		   ->addSelect('e')
                       ->andWhere('e.nom LIKE :formvalue OR p.nom LIKE :formvalue OR e.nom LIKE :formvalue')
    		   ->setParameter('formvalue', $formvalue);
    et il faudrait effectivement ajouter des joker à ton expression $formvalue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $formvalue=$formvalue.'%';

  6. #6
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    Merci arnooo999 pour ta réponse. Effectivement c'est ce que je cherche à faire mais il me semble que même avec ta requête, ça ne marche pas, j'entre par exemple le nom d'une entreprise mais ça ne me retourne rien

    J'édite pour signaler que ça marche nickel, merci beaucoup. Voici la requête finale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public function getSearchList($formvalue) 
    	{
    		$qb = $this->createQueryBuilder('t');
    		$qb->join('t.nom', 'n')
    		   ->join('t.entreprise', 'e')
    		   ->join('t.personne', 'p')
    		   ->addSelect('n')
    		   ->addSelect('p')
    		   ->addSelect('e')
               ->andWhere('t.priorite LIKE :formvalue OR t.commentaire LIKE :formvalue OR e.nom LIKE :formvalue OR p.nom LIKE :formvalue OR n.nom LIKE :formvalue')
    		   ->setParameter('formvalue', '%'.$formvalue.'%');
     
    		return $qb->getQuery()->getResult();
    	}
    Merci encore arnooo999. Et aussi vgross

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/06/2006, 10h11
  2. Problème Requete Multi Jointure + Like
    Par thefutureisnow dans le forum Langage SQL
    Réponses: 27
    Dernier message: 06/01/2006, 15h50
  3. requete avec double jointure externe
    Par cdu dans le forum Langage SQL
    Réponses: 8
    Dernier message: 04/01/2006, 14h54
  4. Problème Requete Multi Jointure + Like
    Par thefutureisnow dans le forum Requêtes
    Réponses: 3
    Dernier message: 02/01/2006, 19h39
  5. requete avec 2 jointures
    Par bissy88 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/04/2004, 13h52

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