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 :

Tri sur un sous ensemble dans une requête


Sujet :

Doctrine2 PHP

  1. #1
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut Tri sur un sous ensemble dans une requête
    Bonjour,

    Je fais une requête pour obtenir un "Client" qui contient des interventions. Je dois récupérer le client demandé et trier toutes ses interventions par leur nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function oneClientSortedByInterventionNames($idClient) {
            return $this->createQueryBuilder('c')
                            ->where('c.id = :idClient')
                            ->setParameter('idClient', $idClient)
                            ->orderBy('c.interventions', 'ASC')
                            ->getQuery()
                            ->getResult();
        }

    Dans l'entité "Client" j'ai un attribut "interventions" qui est une relation @ManyToMany comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /**
         * @ORM\ManyToMany(targetEntity="Sdz\ReportBundle\Entity\Intervention", mappedBy="clients", cascade={"persist", "remove", "merge"})
         **/
        private $interventions;
    Avec cette requête j'obtiens le message d'erreur suivant :
    [Semantical Error] line 0, col 81 near 'interventions': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected.

    500 Internal Server Error - QueryException
    1 linked Exception:
    • QueryException »
    ... et la trace de la requête est la suivante :

    [1/2] QueryException: SELECT c FROM Sdz\ReportBundle\Entity\Client c WHERE c.id = :idClient ORDER BY c.interventions ASC
    Cela fait de très nombreuses heures que je cherche à faire cette requête mais en vain.

    Pouvez-vous m'indiquer comment cela peut être fait ?

    Merci beaucoup.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    Je fais une requête pour obtenir un "Client" qui contient des interventions. Je dois récupérer le client demandé et trier toutes ses interventions par leur nom :
    A aucun moment dans ta requete tu ne précise sur quelle critere tu veux trier, par intervention, OK, mais quel attribut d'interventions?
    D'autre part tu ne fais pas de jointure, donc pas de récupération des interventions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public function oneClientSortedByInterventionNames($idClient) {
            return $this->createQueryBuilder('c')
                            ->addSelect('i')
                            ->join('c.interventions','i')
                            ->where('c.id = :idClient')
                            ->setParameter('idClient', $idClient)
                            ->orderBy('i.nom', 'ASC')
                            ->getQuery()
                            ->getSingleResult();//je suppose que ta méthode devrait renvoyer une entité Client , et non un tableau d'entité Client
        }
    Au passage, on peut préciser sun ordre de tri sur les relations via les annotations:
    http://docs.doctrine-project.org/en/...annref-orderby

  3. #3
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Au passage, on peut préciser sun ordre de tri sur les relations via les annotations:
    http://docs.doctrine-project.org/en/...annref-orderby[/QUOTE]

    Merci beaucoup pour toutes ces explications. +1

    Je vais essayer cela.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  4. #4
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Merci vraiment arnooo999

    Cela m'a vraiment dépanné car je n'avais pas encore trouvé : peut-être que je travaille trop aussi et que j'étais fatigué.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

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

Discussions similaires

  1. sous ensemble dans une liste
    Par philippe6 dans le forum Débuter avec Java
    Réponses: 26
    Dernier message: 18/03/2013, 15h42
  2. [VxiR2] Filtre sur date du jour dans une requête
    Par niko8181 dans le forum Webi
    Réponses: 5
    Dernier message: 05/10/2009, 15h39
  3. Ajout de Sous Totaux dans une requête
    Par oohcalme dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 14/08/2009, 12h06
  4. Ordre de tri par mois et années dans une requête analyse croisée
    Par garsflo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/11/2007, 21h11
  5. Réponses: 2
    Dernier message: 27/03/2007, 17h47

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