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 :

Convertir ce Left Join en queryBuilder ?


Sujet :

Doctrine2 PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut Convertir ce Left Join en queryBuilder ?
    Bonjour à tous,

    Voici mon problème sur lequel je bloque.

    J'ai 2 tables: Budget et Famille,

    Budget à une propriété/relation "famille_id" de type ManyToOne vers Famille (on peut avoir plusieurs budgets pour une Famille).

    La propriété famille_id peut être NULL. (ce qui veut dire que c'est à l'ensemble des membres de la famille que le budget est alloué, oui je sais c'est tiré par le cheveux mais bon le code initial n'est pas de moi)

    Mon problème c'est que je n'arrive pas à avoir les enregistrements dont la propriété famille_id est NULL en plus de ceux qui ne le sont pas.

    Ma requête SQL qui fonctionne est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `budget` LEFT JOIN famille ON famille.id = budget.famille_id
    Et en queryBuilder, j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $qb = $this->createQueryBuilder('u');
    $qb->leftJoin('u.famille', 'famille', 'WITH', 'u.famille IN (:familles)')
            ->setParameter('familles', $user->getfamillesRead());
    Je n'obtiens hélas que les budgets donc famille_id n'est pas NULL.

    Je pensais que le leftJoin prenait aussi tous les enregistrements de la table Budget non ?

    Une idée sur comment avoir, en plus de mes enregistrements, ceux dont famille_id est NULL ?

    D'avance merci,
    Bruno

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    problème résolu !

    en fait, mon leftJoin ne pointait pas sur la bonne propriété famille !

    j'ai changé la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $qb->leftJoin('u.famille', 'famille', 'WITH', 'u.famille IN (:familles)')
            ->setParameter('familles', $user->getfamillesRead());
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $qb->leftJoin('MS\TotoBundle\Entity\famille', 'famille', 'WITH', 'famille.id IN (:familles)')
            ->setParameter('familles', $user->getfamillesRead());

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

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