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

Symfony PHP Discussion :

jointures de plusieurs tables Doctrine 2 / symfony avec une querybuilder


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2012
    Messages : 4
    Par défaut jointures de plusieurs tables Doctrine 2 / symfony avec une querybuilder
    Bonjour,

    Je me mets au jointures Doctrine 2 et a symfony et j'ai un problème.

    J'ai trois Tables: Articles, Souscategories, Catégories.

    Une categorie a n sous categories et une soustegorie a n articles.

    Les relations: Article Many-to-one Souscategories, Souscategories Many-to-one Categories.

    Je veux récupérer les Articles par Categories et/ou where catégories='1' par exemple.

    Après plusieurs essais et jours de test je récupère un tableau vide pas d'erreur.

    ArticleRepository:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public function findAllArticleByCategories($categories) {
            $qb = $this->createQueryBuilder('a')
                    ->Join('a.souscategories', 's')
                    ->Join('s.categories', 'c')
                    ->andwhere('c.categories =:categories')
                    ->setParameter('categories', $categories);
     
    return $qb->getQuery()->getResult();
    Article Controller:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public function categorieArticleAction($categories) {
            $em = $this->getDoctrine()->getManager();
            $article = $em->getRepository('EncoursBundle:Article')->findAllArticleByCategories($categories);
            return $this->render('EncoursBundle:Default:article/module/articlepc.html.twig', array('article' => $article));
        }
    Ma vue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {% for articles in article %}
                  <h3>titre de l'article</h3>
                                <a>{{ articles.titre }}</a></br>
                        </li>
                    {% endfor %}
    La doc symfony n'est pas trop documenté, mais surtout sur les forums je n'ai pas trouvé d'exemple avec les relations dont j'ai besoins.

    Merci d’éclairer ma lanterne, il n'y a plus trop de pétrole dedans.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        ->andwhere('c.categories =:categories')
    Est-ce que dans ton entité Categories t'as bien la propriété categories?
    tu peux aussi filtrer explicitement dans la clause WHERE l'id de la catégorie recherchée en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        ->andwhere('c.id =:categories')
    Utilises dump de Symfony pour ton débogage au lieu d'afficher les données dans la vue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public function categorieArticleAction($categories) {
            if( !$categories ) throw new \Exception("la catégorie $categories n'existe pas");
            $em = $this->getDoctrine()->getManager();
            $article = $em->getRepository('EncoursBundle:Article')->findAllArticleByCategories($categories);
            dump( $article ); // 
            return $this->render('EncoursBundle:Default:article/module/articlepc.html.twig', array('article' => $article));
        }
    P.S: join (en minuscule) en lieu et place Join pour exprimer la jointure.

  3. #3
    Membre expérimenté
    Avatar de vinmar
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2012
    Messages : 139
    Par défaut
    Salut,

    Peux-tu nous montrer tes entités ?

    A+

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2012
    Messages : 4
    Par défaut je pense a voir trouver
    Bonjour,
    apres plusieurs recherche, j'ai finalement reussi, un miracle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     public function findByCategories($categories) {
            $qb = $this->createQueryBuilder('c')
                    ->Join('c.souscategories', 's')
                    //->addSelect('s')
                    ->Join('s.article', 'a')
                    ->where('s.categories IN (:categories)')
                    ->setParameter('categories', $categories);
            //dump($qb);
            // try {
            return $qb->getQuery()->getResult();
    Merci pour vos conseils et votre aide.

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

Discussions similaires

  1. Sélection avec Jointure sur plusieurs tables
    Par barale61 dans le forum Requêtes
    Réponses: 7
    Dernier message: 12/09/2016, 19h11
  2. Update avec jointure sur plusieurs tables
    Par jnauche dans le forum SQL
    Réponses: 11
    Dernier message: 27/11/2015, 09h28
  3. Réponses: 16
    Dernier message: 20/05/2015, 13h36
  4. [CakePHP] jointure de plusieurs tables avec cakephp
    Par taphacakephp dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 16/09/2014, 13h17
  5. [XL-2007] Problème Requête avec Jointure de plusieurs Tables VBA
    Par fleur_d_eden dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/05/2012, 11h03

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