Bonjour la commu ! Je débute en symfony, et j'apprend petit a petit a reproduire ce que je savais deja programmer en php vanilla.
Dans le cadre d'un projet pour mes études, je dois créer dans mon application web un tableau dynamique qui affiche un récapitulatif des commandes passé par des clients (voir tableau ci dessous)
Mon problème, est que je doit utiliser une requête spéciale pour certaines cases de ce tableau (en php c'est pas si dur, mais comme j'utilise Symfony pour la première fois et que je découvre encore twig, je ne sais pas trop comment m'y prendre...
chaque ligne represente une commande et a partir de la 5e colonne, on doit pouvoir compter le nombre de ce type de produit pour une commande donné...
j'ai fait des recherche et je suis tombé sur un certain "queryBuilder", et je n'arrive pas a comprendre son fonctionnement (il faut savoir que je n'ai pas de cours sur symphony ;-; )
Si vous voulez plus d'info n'hésitez pas a me le faire savoir!
Merci énormément a ceux qui prendront le temps de me répondre <3

{% block body %}
<div id="DivAgregation">
<table class="styled-table" width="100%">
              <thead>
                <tr>
                    <td>Commande n°</td>
                    <td>Client</td>
                    <td>Date</td>
                    <td>Total Produits</td>
                {% for Produit in Produits %}
                  <td>{{Produit.nomProduit}}</td>
                {% endfor %}
                </tr>
              </thead>
              <tbody>

                                {% for Commande in Commandes %}
                                <tr>
                                  <td>{{Commande.id}}</td>
                                  <td>{{Commande.nomClient}}</td>
                                  <td>{{Commande.Date | date('d/m/Y')}}</td>

                                                  <td>{{ Commande.getProduits|length }}</td>
                                                  {% for Produit in Produits %}
                                                    <td>requete:nombre de ce produit pour cette commande</td>
                                                  {% endfor %}

                                </tr>
                                {% endfor %}

              </tbody>

            </table>
</div>

{% endblock body %}

Ce que je veux

Il faudrais remplacer les cases "requete:nombre de ce produit pour cette commande" par le nombre de produits pour la commande.

Ce que j'obtiens
https://cdn.discordapp.com/attachments/510610290287837195/909930118284189706/unknown.png

2 réponses


Bonjour,

Pour apprendre symfony, tu peux trouver une formation très bien faite sur ce site.

Pour répondre à ta question :
Tu as déja le nb de produits par commande en faisant {{ Commande.getProduits|length }}.
Par contre je trouve tes boucles étranges car tu fais 2 boucles, une sur Produits pour faire ton entête de tableau et une sur Commandes pour le contenu : ça va faire sauter ton tableau si à chaque ligne tu as un nb de produits différent.

Tu veux afficher le nombre et la liste des produits pour chaque commande, c'est bien ça ?

dans ce cas, je commencerais juste par un affichage de ce type (avec les produits liés à une commande dans une colonne):


{% block body %}
<div id="DivAgregation">
<table class="styled-table" width="100%">
              <thead>
                <tr>
                    <td>Commande n°</td>
                    <td>Client</td>
                    <td>Date</td>
                    <td>Total Produits</td>
                  <td>Produits commandés</td>
                </tr>
              </thead>
              <tbody>

                                {% for Commande in Commandes %}
                                <tr>
                                  <td>{{Commande.id}}</td>
                                  <td>{{Commande.nomClient}}</td>
                                  <td>{{Commande.Date | date('d/m/Y')}}</td>

                                                  <td>{{ Commande.getProduits|length }}</td>
                                                  <td>
                                                     <ul>
                                                      {% for Produit in Commande.getProduits %}
                                                            <li>{{Produit.nomProduit}}</li>
                                                      {% endfor %}
                                                      </ul>
                                                  </td>

                                </tr>
                                {% endfor %}

              </tbody>

            </table>
</div>

{% endblock body %}

et une fois que tu as tes données, tu peux améliorer l'affichage.

Le query builder, c'est pour faire des requêtes dans un repository que tu pourras réutiliser.
je te conseille de jeter un coup d'oeil à la formation symfony https://grafikart.fr/formations/symfony-4-pratique qui devrait t'éclairer.

MhdLyon
Auteur

Bonjour, Tout-d'abord merci beaucoup pour votre réponse !
Grace a votre code j'ai remarqué que je ne peux pas ajouter plusieurs fois le meme produit dans une commande (je ne sais pas encore pourquoi mais j'ai une excellente piste: (https://stackoverflow.com/questions/26492888/how-to-add-multiple-times-the-same-entity-in-a-manytomany-association-with-doctr)
j'ai effectivement une liste des produits et a présent il me reste plus qu'a compter ceux qui m'interessent. Des que je finis mes cours je fonce chercher une solution !
Merci encore pour votre aide, et si vous avez encore des conseils/solutions, elles sont la bienvenue !