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 :

requete queryBulder sur date plus recente


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par défaut requete queryBulder sur date plus recente
    Bonjour, j'ai des enregistrements en base, les voicis:

    id | created_at | user
    25 |January 21, 2015, 5:58 pm | 21
    26 |January 22, 2015, 12:57 pm | 21

    je voudrais grâce a une requête queryBulder récupéré l'enregistrement ou la date et la plus récente 'MAX' de l'user 21, donc je fais ceci:

    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
     $em = $this->getEntityManager();
     
            $qb = $em->createQueryBuilder();
     
            $qb->select('c','MAX(c.createdAt)')
            ->from('FrontendPanierBundle:Cart', 'c')
            ->where('c.user = :user')
            ->setParameter('user', $user);
            $query = $qb->getQuery();
     
            try {
                return $query->getSingleResult();
            } catch (\Doctrine\ORM\NoResultException $e) {
                return null;
            }
    le résultat est le suivant:
    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
    64
    65
    66
    67
    68
     
    array (size=2)
      0 => 
        object(Frontend\PanierBundle\Entity\Cart)[413]//DE OU PROVIENT CETTE OBJET
          private 'id' => int 23
          private 'cart_product' => 
            object(Doctrine\ORM\PersistentCollection)[381]
              private 'snapshot' => 
                array (size=0)
                  ...
              private 'owner' => 
                &object(Frontend\PanierBundle\Entity\Cart)[413]
              private 'association' => 
                array (size=15)
                  ...
              private 'em' => 
                object(Doctrine\ORM\EntityManager)[246]
                  ...
              private 'backRefFieldName' => string 'cart' (length=4)
              private 'typeClass' => 
                object(Doctrine\ORM\Mapping\ClassMetadata)[334]
                  ...
              private 'isDirty' => boolean false
              private 'initialized' => boolean false
              private 'coll' => 
                object(Doctrine\Common\Collections\ArrayCollection)[406]
                  ...
          private 'createdAt' => string 'January 21, 2015, 5:58 pm' (length=25)
          private 'user' => 
            object(Backend\UserBundle\Entity\User)[53]
              protected 'id' => int 24
              private 'nom' => string 'Gacquere' (length=8)
              private 'prenom' => string 'Loic' (length=4)
              private 'adrfacturation' => string 'ldsds' (length=5)
              private 'codeadrf' => string 'dsds' (length=4)
              private 'villeadrf' => string 'sdds' (length=4)
              private 'adrlivraison' => string 'sd' (length=2)
              private 'codeadrl' => string 'sdds' (length=4)
              private 'villeadrl' => string 'sdsd' (length=4)
              private 'news' => boolean false
              private 'commandes' => 
                object(Doctrine\ORM\PersistentCollection)[43]
                  ...
              protected 'username' => string 'loic' (length=4)
              protected 'usernameCanonical' => string 'loic' (length=4)
              protected 'email' => string 'lgacquere@free.fr' (length=17)
              protected 'emailCanonical' => string 'lgacquere@free.fr' (length=17)
              protected 'enabled' => boolean true
              protected 'salt' => string '6y5ij5exdrwg8c04go8g4o4ocw4ows8' (length=31)
              protected 'password' => string '1VgNU7JmzBBKGWQAmSuk4nawn3YvI4SLHF6+t/Rt7UAc0dJmclpD3UyXA1Na/FW6tGVLT83jV2clpUgs10VeZg==' (length=88)
              protected 'plainPassword' => null
              protected 'lastLogin' => 
                object(DateTime)[56]
                  ...
              protected 'confirmationToken' => string 'jtuxmIpMtokLrMbypgJZRa8AsotoEtfPs-byoBUL_qA' (length=43)
              protected 'passwordRequestedAt' => 
                object(DateTime)[55]
                  ...
              protected 'groups' => null
              protected 'locked' => boolean false
              protected 'expired' => boolean false
              protected 'expiresAt' => null
              protected 'roles' => 
                array (size=0)
                  ...
              protected 'credentialsExpired' => boolean false
              protected 'credentialsExpireAt' => null
      1 => string 'January 22, 2015, 12:57 pm' (length=26)//on voir bien la date la plus récente mais de l'index 1 du tableau
    je voudrais seulement récupérer l'objet ou la date est la plus récente?

    Merci les amis

  2. #2
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $qb = $em->createQueryBuilder();
     
    return $qb
        ->select('c')
        ->from('FrontendPanierBundle:Cart', 'c')
        ->where('c.user = :user')
        ->setParameter('user', $user)
        ->orderBy('createdAt', 'DESC')
        ->getQuery()
        ->setMaxResult(1)
        ->getSingleResult()
    ;

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par défaut
    Ah bon tu t'y prend de cette manière, donc tu range par ordre décroissant sur les dates puis prend la première, est dont cela l'ami.
    j'ai cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    An exception has been thrown during the rendering of a template ("[Semantical Error] line 0, col 72 near 'createdAt DE': Error: 'createdAt' is not defined.") in FrontendDefaultBundle::layout.html.twig at line 26. 
    <i>45</i>
    Merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 508
    Par défaut
    Merci l'ami c ok, tu avais oublie les alias pour certain champ comme par exemple le

    pour la clause

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ->orderBy('c.createdAt', 'DESC')
    et la methode:

    prend un "s",

    voici la requete fonctionnelle:

    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
     $em = $this->getEntityManager();
     
            $qb = $em->createQueryBuilder();
            try {
                return $qb
                                ->select('c')
                                ->from('FrontendPanierBundle:Cart', 'c')
                                ->where('c.user = :user')
                                ->orderBy('c.createdAt', 'DESC')
                                ->setMaxResults(1)
                                ->setParameter('user', $user)
                                ->getQuery()
                                ->getSingleResult();
            } catch (\Doctrine\ORM\NoResultException $e) {
                return null;
            }
    Merci Nico_F

Discussions similaires

  1. Requete - Operation sur date
    Par beamer dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/01/2009, 10h03
  2. requete between sur dates
    Par cedlannoy dans le forum Débuter
    Réponses: 5
    Dernier message: 18/02/2008, 12h34
  3. Requete Selection Sur Date
    Par otaquet dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 28/11/2006, 11h57
  4. requete selection sur date
    Par otaquet dans le forum Access
    Réponses: 24
    Dernier message: 25/10/2006, 10h36
  5. Réponses: 2
    Dernier message: 28/11/2005, 07h24

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