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 :

ManyToMany avec attributs et join dans query builder


Sujet :

Doctrine2 PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut ManyToMany avec attributs et join dans query builder
    Bonjour à tous,

    je suis nouveau sur symfony2, et j'ai du mal à comprendre certains choses malgré mes lectures sur le net,

    J'ai une relation ManyToMany que j'ai modélisée en ajoutant une entité intermédiaire car j'ai un attribut dessus,

    Disons que j'ai une entité User, une entité Group, et une entité de relation UsersGroups.

    Mon problème est que j'aimerais, dans le repository de User, pouvoir récupérer pour un User donné, un tableau avec les groupes auxquels il appartient (l'attribut supplémentaire de la relation étant un ordre total entre les groupes d'un utilisateur, il sera modélisé par la position dans le tableau),

    Et là j'avoue que c'est le flou artistique, je me mélange entre requetage directement sur les objets ou sur les champs de la BD.

    Dans ma requete doctrine, j'ai essayé de partir de l'entité Group (puisque je veux des objets Group en sortie), et de faire un join vers UsersGroups puis sur User (avec une contrainte sur l'id).

    Mais je ne sais pas si je dois faire des join sur l'attribut usersgroups de Group ou sur des champs de la BD ...

    Bref je suis paumé,

    Quelqu'un pourrait m'aiguiller ?

    Merci d'avance !

    Ptit Codeur

  2. #2
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 320
    Points : 204
    Points
    204
    Par défaut
    Salut,

    Il faut effectivement faire des jointures pour relier dans une et même requête tes entités et récupérer les infos de ton entité User UserGroups et Group.

    Maintenant pour ce qui est de la construction de ta requête, il faut que tu utilises les noms de tes attributs de class, en respectant la casse et pas le nom des champts dans ta base.

    Tu indiques à doctrine quels attributs tu veux mettre en relation et lui se dé....brouille, pour aller chercher les données en base.

  3. #3
    Membre habitué Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Points : 181
    Points
    181
    Par défaut
    Si jamais j'ai du résoudre un problème dans le genre aujourd'hui si ça peut encore être utile..

    voici la solution que j'ai appliqué pour mon projet


    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
    21
    22
    $em = $this->getDoctrine()->getManager();
    $qb = $em->createQueryBuilder()->addSelect('u')->from('ClientUserBundle:User', 'u');
    $qb->leftJoin('u.groups','g');
     
    if (count($criteria) == 0)
    {
        foreach ($_POST as $attr => $value)
        {
            if ($value!='')
            {
                if (!is_array($value))
                    $value = array($value);
     
                foreach ($value as $key => $value)
                {
                    $attribute = str_replace('__', '.', $attr);
                    $qb->andwhere($attribute.' like :'.$value)->setParameter($value,'%'.$value.'%');
                }
            }
        }
    }
    $users = $qb->getQuery()->getResult();

Discussions similaires

  1. Relation ManyToMany avec attribut
    Par icl1c dans le forum Doctrine2
    Réponses: 0
    Dernier message: 09/03/2012, 11h44
  2. requete dataset avec dblink dans query builder
    Par livinho38 dans le forum Visual Studio
    Réponses: 4
    Dernier message: 26/08/2010, 10h53
  3. placer des parentheses dans query builder
    Par gg2vig dans le forum Toad
    Réponses: 0
    Dernier message: 26/01/2010, 15h05
  4. Réponses: 3
    Dernier message: 29/03/2009, 16h12
  5. Réponses: 8
    Dernier message: 27/02/2009, 01h37

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