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

Doctrine2 PHP Discussion :

[Symfony] Requête et sous-requête


Sujet :

Doctrine2 PHP

  1. #1
    Membre à l'essai Avatar de MaolmeoX
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 11
    Points : 12
    Points
    12
    Par défaut [Symfony] Requête et sous-requête
    Bonjour à tous,
    Je suis actuellement en stage, l'objectif de mon stage c'est de créer une maquette plus ou moins fonctionnelle d'un portail client.
    Pour cette maquette j'ai décidé d'utiliser le framework Symfony.

    Depuis ce portail, quand l'utilisateur c'est créé un compte et à rempli la case "Numéro de client" je m'interface avec notre base de données CRM et je récupère toutes les informations le concernant.
    Actuellement je travail sur l'onglet "Mes tarifs" qui permet au client d'accéder à tous ses tarifs directement en ligne.

    J'ai une table produit qui répertorie tous les produits. Chaque produit peut appartenir à une gamme de produit et à une sous gamme.

    Ce que j'aimerais obtenir comme résultat c'est un tableau qui ressemblerait à ça:
    Array=>(
    • gamme1 Array=>(
      • sous-gamme-1 Array=>(
        • Produit1(object)

        • Produit2(object)

        • Produit3(object)

        )

      • sous-gamme-2 Array=>(
        • Produit1(object)

        • Produit2(object)

        • Produit3(object)

        )

      • sous-gamme-3 Array=>(
        • Produit1(object)

        • Produit2(object)

        • Produit3(object)

        )

      )

    • gamme2 Array=>(
      • sous-gamme-1 Array=>(
        • Produit1(object)

        • Produit2(object)

        • Produit3(object)

        )

      • sous-gamme-2 Array=>(
        • Produit1(object)

        • Produit2(object)

        • Produit3(object)

        )

      • sous-gamme-3 Array=>(
        • Produit1(object)

        • Produit2(object)

        • Produit3(object)

        )

      )

    )
    Et ainsi de suite avec toutes les gammes qui contiennent des sous gammes et qui elles mêmes contiennent une liste d'objet produit

    Ma classe produit
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <?php
     
    namespace CompteBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * Product
     *
     * @ORM\Table(name="NewProduct")
     * @ORM\Entity(repositoryClass="CompteBundle\Repository\ProductRepository")
     */
    class Product {
     
        /**
         * @var int
         *
         * @ORM\Column(name="Prod_ProductID", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
     
        /**
         * @var string
         *
         * @ORM\Column(name="prod_Active", type="string", length=40)
         */
        private $productActive;
     
        /**
         * @var string
         *
         * @ORM\Column(name="prod_name", type="string", length=200)
         */
        private $productName;
     
        /**
         * @var string
         *
         * @ORM\Column(name="prod_gdacomment", type="text", nullable=true)
         */
        private $productComment;
     
        /**
         * @var string
         *
         * @ORM\Column(name="prod_gamme_sof", type="string", length=40, nullable=true)
         */
        private $productGammeSof;
     
        /**
         * @var string
         *
         * @ORM\Column(name="prod_sous_gamme_sof", type="string", length=40, nullable=true)
         */
        private $productSousGammeSof;
     
        /**
         * @ORM\OneToOne(targetEntity="Pricing", inversedBy="product")
         * @ORM\JoinColumn(name="Prod_ProductID", referencedColumnName="pric_ProductID")
         */
        private $pricing;
    Du coup je n'ai pas d'entité gamme ou sous-gamme, toute la requête doit se faire sur la même table en base de données.
    Sinon j'aurais pu faire une gamme qui embarque une collection de sous-gamme qui elles mêmes embarque des produits.

    Je ne sais pas si j'ai été assez clair ? Je ne vois pas trop comment faire ça avec doctrine et surtout est-ce que c'est réalisable.

    Merci du temps que m'accordez.

  2. #2
    Membre confirmé
    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
    Points : 516
    Points
    516
    Par défaut
    Salut,

    Doctrine n'est pas fait pour ça. Je m'explique, Doctrine te permet de faire la liaison entre ta BDD et Symfony, c'est une couche d'abstraction.
    Le fait de retourner un array multidimensionnel, c'est autre chose, et c'est plus du PHP classique (une petite fonction récursive peut faire l'affaire).

    Petite précision, tu n'as pas besoin d'avoir de gamme ou sous gamme. Si je comprend bien ton objet, tu as une entité Product qui peut avoir des enfants qui sont aussi des entités Product donc ton entité doit être comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class product 
    {
        /** 
         * @var integer 
         */
        protected $id;
     
        /** 
         * @var Product
         */
        protected $parent;
    }
    Ensuite si tu veux le parent de l'entité tu fais un $product->getParent(), si tu veux les enfants d'un entité, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $children = $this->get('doctrine.orm.entity_manager')->getRepository('AcmeProductBundle:Product')->findBy(array('parent'= > $product_parent_id);
    M. Lebowski : Avez-vous un emploi, monsieur ?
    Le Duc : Un emploi ?
    M. Lebowski : Ne me dites pas que vous cherchez un emploi dans cette tenue un jour de semaine ?
    Le Duc : Un jour de… Quel jour on est ?

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

Discussions similaires

  1. [1.x] Sous Requête SQL sous Symfony
    Par micky86 dans le forum Symfony
    Réponses: 2
    Dernier message: 06/11/2011, 12h31
  2. intégré une sous requête dans une requête
    Par Smix007 dans le forum SQL
    Réponses: 13
    Dernier message: 25/06/2007, 11h45
  3. inclure une sous requête dans une requête
    Par garsflo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 08/05/2007, 19h12
  4. Requête et sous requête avec SELECT et UPDATE
    Par Véronique75ca dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/06/2006, 21h25
  5. Requêtes et sous requêtes
    Par lau2nyce dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/03/2004, 15h14

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