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 :

Afficher les éléments d'une table en fonction d'une autre table (manyToMany)


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2017
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2017
    Messages : 27
    Points : 19
    Points
    19
    Par défaut Afficher les éléments d'une table en fonction d'une autre table (manyToMany)
    Bonjour à tous,

    J'ai une entité produit et une entité catégorie. Les deux sont liées par une relation manyToMany donc une table produits_categories a été créée. Jusque ici tout va bien.

    Maintenant, j'ai un menu contenant mes catégories et des sections. Section est un champ de l'entité catégorie => il catégorise les catégories ( ex : 3 sections : "accessories, print, collection", print contient les catégories "wtf, bigdeal, high".. ). Quand je clique sur un des onglets mon url se met à jour sous cette forme : "products/section/categorie". Ceci marche.

    Je veux avoir une seule action dans mon controller qui me permet de trier les produits à afficher en fonction de la catégorie sur laquelle j'ai cliqué.

    Pour l'instant mon action ressemble à
    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
     
        /**
         * @Route("/{section}/{slug}", name="categorie")
         * @param $section
         * @param $slug
         * @param $id
         * @return Response
         */
        public function categorieAction($section, $slug, $id)
        {
            $em = $this->getDoctrine()->getManager();
     
            $section = $em->getRepository("AppBundle:Categorie")->findBySection($section);
            $categorie = $em->getRepository("AppBundle:Categorie")->findBySlug($slug);
            $product = $em->getRepository("AppBundle:Product")->findByCategories($id);
     
     
            return $this->render('default/products/products.html.twig',
                array('categorie' => $categorie, 'section' => $section, 'product' => $product));
        }
    }
    Est-ce que quelqu'un pourrait m'aider ? J'ai vu pas mal de topic parler de queryBuilder, est-ce que je suis obligé de passer par là ?

    Merci,

    Max

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2017
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2017
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    J'ai aussi essayé de cette manière :
    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
     
        /**
         * @Route("/{section}/{slug}", name="categorie")
         * @param $section
         * @param $slug
         * @return Response
         * @internal param $id
         */
        public function categorieAction($section, $slug)
        {
     
            $em = $this->getDoctrine()->getManager();
            $section = $em->getRepository("AppBundle:Categorie")->findBySection($section);
            $categorie = $em->getRepository("AppBundle:Categorie")->findBySlug($slug);
            $product = $em->getRepository("AppBundle:Product")->findByCategories($categorie);
     
     
            return $this->render('default/products/products.html.twig',
                array('categorie' => $categorie, 'section' => $section, 'product' => $product));
        }
    J'ai l'impression de me rapprocher de la solution mais j'ai toujours une erreur qui est la suivante :

    "An exception occurred while executing 'SELECT t0.id AS id_1, t0.nom AS nom_2, t0.quantite AS quantite_3, t0.prix AS prix_4, t0.img AS img_5 FROM product t0 WHERE products_categories.categorie_id IN (?)' with params [36]:

    SQLSTATE[42S22]: Column not found: 1054 Champ 'products_categories.categorie_id' inconnu dans where clause"

    Ici, mon url est products/collection/starter. L'id de la catégorie starter est "36". Il correspond au with params.
    Si je met products/print/high je vais avoir un with params de 30 qui correspond aussi à l'Id.

    Désolé pour le double post.

    Max

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/11/2015, 12h20
  2. [XL-MAC 2011] Remplir une table en fonction d'une condition à l'aide d'une itération
    Par chou2best dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/11/2015, 16h29
  3. Réponses: 2
    Dernier message: 16/06/2014, 13h11
  4. Réponses: 10
    Dernier message: 12/12/2011, 19h48
  5. Réponses: 2
    Dernier message: 27/12/2005, 20h09

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