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

ORM PHP Discussion :

Requêtes et jointures


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Par défaut Requêtes et jointures
    Bonjour,

    Je fait appel à vous car j'essai depuis quelques jours de faire une requête. J'ai fouillé sur le forum et malgré les problèmes similaires, je n'arrive pas à trouver la solution.

    La règle de gestion est la suivante : un client est lié à plusieurs secteurs d'actvités.

    J'ai donc trois tables :
    - client (avec un id)
    - secteur activité (avec un id)
    - une table de liaison (avec un id et les id des tables clients et secteur activité pour faire le lien).

    L'objectif est de rechercher les clients.
    Voici donc le début de ma requête :

    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
    16
    17
    18
    19
    20
     
    $qb = $this->createQueryBuilder('cp');
     
    // construction du where en fonction des critères de recherche
    $andExpr = $qb->expr()->andX();
     
    ...
     
    // La recherche se fait sur des critères propre à la table client => OK
     
    ...
     
    // La recherche sur fait un des critères de la table secteur activité => PAS OK
     
    ...
     
    // Requete
    $qb ->select('c')
    ->where($andExpr)
    ->addOrderBy('c.nom', 'ASC');
    C'est donc au niveau de la jointure que je n'arrive pas à faire le lien. J'ai essayé différentes solutions avec les innerJoin(). Mais sans succès. J'espère avoir été assez clair.

    Merci pour votre aide !

  2. #2
    Membre émérite Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Par défaut
    Bonjour à toi,

    Si tu es bien en many to many, tout ce passe au niveau de ton schema.yml, comme indiqué ici.
    Ensuite tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    symfony doctrine:build-model
    il va te générer toutes tes classes objets.

    Enfin pour faire ta liaison tu utilise leftjoin ou innerjoin (en fonction de tes besoins) et dedans tu mets le nom de l'alias (foreignAlias) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $qb = $this->createQueryBuilder('cp')
              ->leftJoin('cp.GroupUsers gu')
              ->where('gu.activity="commercial"');

Discussions similaires

  1. Requête avec jointures
    Par Corben dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/11/2004, 12h55
  2. Réponses: 6
    Dernier message: 20/09/2004, 15h26
  3. Mise à jour de table impossible après requête avec jointure
    Par sto dans le forum Bases de données
    Réponses: 5
    Dernier message: 17/03/2004, 13h24
  4. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  5. Réponses: 14
    Dernier message: 17/03/2003, 18h31

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