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 toutes les lignes du tableau EN MEME TEMPS qu'un COUNT ou un SUM


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2020
    Messages : 4
    Par défaut Afficher toutes les lignes du tableau EN MEME TEMPS qu'un COUNT ou un SUM
    Hello,

    Je refais du Symfony après un peu de temps hors de ce framework.

    J'ai un tableau de produits (chaque produit peut appartenir à un seul package mais un package peut contenir de un à plusieurs produits) et je veux déclencher un COUNT (des produits compatibles gauchers) et je trie les package par ordre décroissant de produits adaptés aux gauchers.

    En gros, un endpoint comme cela :
    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
    [
    {
    "0": {
    "id": 9,
    "packageId": 2,
    "prodId": 8,
    "quantity": 14,
    "lefthanded": true
    },
    "sumProduitGaucher": "5"
    },
    {
    "0": {
    "id": 1,
    "packageId": 1,
    "prodId": 1,
    "quantity": 14,
    "lefthanded": true
    },
    "sumProduitGaucher": "2"
    }
    ]
    Le problème est que comme le montre le json du dessus, je n'ai plus que 2 lignes qui apparaissent (chacune est le premier produit composant le package indiqué) mais je veux l'ensemble des produits qui composent chaque package (toujours dans l'idée de générer un endpoint global qui renvoie toutes les data) donc avec les produits id 2, 3 , 4, ...

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public function findAllOrderByGaucher(): array
    {
        $qb = $this->createQueryBuilder('p')
            ->select('p, COUNT(p.prodId) AS countProd', 'p2', 'WITH', 'p2.id = :id')
            ->where('p.gaucher = 1')
            ->groupBy('p.prodId')
            ->groupBy('p.packId')
            ->orderBy('countPack', 'ASC')
        ;
     
        $query = $qb->getQuery();
        //        dd ($query->execute());
        return $query->execute();
    }
    J'ai ausi esssayé le INNER JOIN (dans le doute), mais ne maitrise pas l'écriture sur DQL, et la doc ne m'a pas aidé:

    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
    public function findAllOrderByGaucher(): array
    {
        $qb = $this->createQueryBuilder('p')
            ->select('p')
            ->innerJoin('COUNT(p.prodId) AS countProd', 'p2', 'WITH', 'p2.id = :id')
            ->where('p.id = :id')
            ->where('p.gaucher = 1')
            ->groupBy('p.prodId')
            ->groupBy('p.packId')
            ->orderBy('countPack', 'ASC')
        ;
     
        $query = $qb->getQuery();
        //        dd ($query->execute());
        return $query->execute();
    }
    Est ce que la méthode est bonne?

    Est ce que c'est possible d'avoir un COUNT et d'afficher toutes les lignes?

    Merci
    PS:
    Dans mon exemple, j'ai copié coller l'ensemble des données pour que cette table soit indépendante (je sais qu'il y'aura des risques de doublons et des incohérences) mais je n'ai pas accès aux autres tables et m'entraine pour générer un endpoint uniquement à partir de cette table.

  2. #2
    Membre confirmé Avatar de Skunka
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 135
    Par défaut
    Salut,

    En retirant le COUNT, la requête va te retourner un tableau d'objets Produit correspondant à ton critère si je ne m'abuse (ta requête est bien dans le repository de ta class Produit ?). Puis, pour récupérer le nombre de produits compatible gaucher, tu peux faire un count($array) (PHP) du tableau retourné ou {{ array|length }} en Twig suivant comment fonctionne ton code après.

Discussions similaires

  1. [XL-2016] VBA-Afficher toutes les lignes d'un tableau selon un critère dans un tableau de synthèse
    Par AnnaKonda dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/04/2020, 11h50
  2. Réponses: 0
    Dernier message: 26/05/2010, 15h38
  3. Afficher toutes les lignes de la requête
    Par sherve dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/04/2008, 09h15
  4. Afficher toutes les lignes d'une JTable ?
    Par n!co dans le forum Composants
    Réponses: 1
    Dernier message: 12/03/2007, 13h16
  5. Réponses: 1
    Dernier message: 29/11/2005, 00h37

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