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 :

Left join et ManyToMany


Sujet :

Doctrine2 PHP

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 41
    Points : 42
    Points
    42
    Par défaut Left join et ManyToMany
    Bonjour,
    J'ai un petit souci pour faire une requête avec Doctrine.
    Pour faire simple, j'ai une table utilisateur et une table role. J'ai déclaré un ManyToMany dans ces deux tables pour avoir une table intermédiaire qui fonctionne bien. Le problème est pour récupérer les données.
    Je voudrais récupérer les Roles non utilisés par une personne, du coup j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $this->getDoctrine()->getEntityManager()->createQuery(
    'SELECT role
    FROM MonBundle:Role role
    LEFT OUTER JOIN role.roleUtilisateurs utilisateur
    WHERE utilisateur.id = '.$idUtilisateur.' AND utilisateur.id IS NULL')->getResult();
    Le problème vient du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    utilisateur.id = '.$idUtilisateur
    qui doit se faire sur la table intermédiaire mais je ne trouve pas la syntaxe pour mettre un where sur la table intermédiaire.

    Merci pour votre réponse qui m'aiderait énormément

  2. #2
    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
    Bonjour,

    Essaie plutot avec IN , NOT EXISTS ou NOT MEMBER

    http://docs.doctrine-project.org/en/...elect-examples

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT role
    FROM MonBundle:Role role
    WHERE role NOT IN(
           SELECT u.role 
           FROM MonBundle:User u 
           WHERE u.id=:idUser)

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2002
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 41
    Points : 42
    Points
    42
    Par défaut
    Salut,
    Oui ca fonctionne avec le notin mais je pense que faire une sous-requete n'est pas forcément utile dans mon cas vu qu'il faut juste pouvoir mettre un where en fonction de la table intermédiaire.

Discussions similaires

  1. count() dans *plusieurs* LEFT JOIN
    Par silver_dragoon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2004, 17h20
  2. LEFT JOIN avec Oracle 8i ne va pas... doit utiliser (+)
    Par loikiloik dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/04/2004, 16h38
  3. Interbase et left join
    Par Zog dans le forum Bases de données
    Réponses: 4
    Dernier message: 23/03/2004, 08h55
  4. Non coincident MySQL (Left Join)
    Par Remiguel dans le forum Requêtes
    Réponses: 6
    Dernier message: 03/11/2003, 21h25
  5. Export d'une vue avec LEFT JOIN
    Par schnourf dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2003, 13h57

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