Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème affichage doublon doctrine

Sujet résolu
    19 janvier 2021 à 13:54:35

    Bonjour je suis en train de faire un site pour une boulangerie, et la je gère l'affichage des produits et j'aimerai en haut faire des boutons avec les différentes catégories des produits (lié à l'entity "Products") pour l'instant deux categories mais d'autres viendront, j'ai donc plusieurs produits av la meme categories et quand je fais afficher ma liste il me donne autant de categories que de produits, ce qui est normal au vu de ma requte.

    Je me demande donc comment faire au plus simple pour éviter l'affichage de doublons, merci. La fonction index est concerner ci dessous.

    <?php
    
    namespace App\Controller;
    
    use App\Entity\Products;
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\Routing\Annotation\Route;
    
    /**
     *
     * @Route("/products", name="products_")
     */
    class HproductsController extends AbstractController
    {
        /**
         * @Route("/", name="index")
         */
        public function index(): Response
        {
            $products = $this->getDoctrine()
                ->getRepository(Products::class)
                ->findAll();
    
    
            return $this->render('hproducts/index.html.twig', [
                'products' => $products,
            ]);
        }
    
        /**
         * @Route("/productDetails/{id}", name="Details")
         * @return Response
         *
         * show details of an article
         */
        public function show(int $id): Response
        {
            $product = $this->getDoctrine()
                ->getRepository(Products::class)
                ->find($id);
    
    
    
            return $this->render('hproducts/productDetails/productDetails.html.twig', [
                'product' => $product,
            ]);
        }
    
        /**
         * @Route("/category/{categoryName}", name="show_category")
         * @param string $categoryName
         * @return Response
         *
        public function showByCategory(string $categoryName):Response
        {
            $category = $this->getDoctrine()->getRepository(Products::class)
                ->findBy(['name' => $categoryName]);
                ->distinct(true)
    
    
            return $this->render("hproducts/categorie.html.twig",['category' => $category]);
        }*/
    
    
    }
    
    {% extends 'layout.html.twig' %}
    
    {% block main %}
        <div class="productContainer container container-fluid mb-5">
            <ul>
                {% for categorie in products %}
                    <li><a href="">{{ categorie.categorie }}</a></li>
                {% endfor %}
            </ul>
            <div class="row">
                {% for product in products %}
                    <div class="card container mt-5" style="width: 25rem;">
                        <a class="" href="{{ path('products_Details', {id: product.id}) }}">
                            <img src="{{ vich_uploader_asset(product, 'imageFile') }}" class="card-img-top" alt="product_picture">
    
                            <div class="card-body">
                                <p class="card-text">{{ product.name }}</p>
                            </div>
                        </a>
                    </div>
                {% else %}
                    <div class="card-body">Pas de collection disponible !</div>
                {% endfor %}
            </div>
        </div>
    {% endblock %}
    




    • Partager sur Facebook
    • Partager sur Twitter
      19 janvier 2021 à 14:27:07

      Salut

      Ce que je ferais, ce serait de récupérer tous les produits et leurs catégories et d'afficher celles-ci dans le .card.

      Où alors tu récupères toutes les catégories avec leurs produits et tu boucles sur chaque catégorie et pour chaque catégorie sur chaque produit.

      Dans les deux cas, ce sont deux boucles imbriquées, simplement soit c'est celle "extérieure" (celle qui créé les .card) qui s'occupe des catégories, soit c'est celle "intérieure".

      • Partager sur Facebook
      • Partager sur Twitter
        19 janvier 2021 à 17:36:10

        yes j'ai fait une table de jointure "categories" et boucle dessus directement, Merci beaucoup.
        • Partager sur Facebook
        • Partager sur Twitter
          19 janvier 2021 à 19:29:49

          Attention, si tu parles de tables, tu vas à un moment ou un autre avoir des soucis avec Doctrine, ou alors ton application ne sera pas optimisée.

          • Partager sur Facebook
          • Partager sur Twitter

          problème affichage doublon doctrine

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown