2012-08-09 12 views
7

'da DQL kullanarak tek bir sonucu nasıl alabilirim Son kullanıcı profilini almak istiyorum. Ama bunu DQL'de yapamıyorum. Bu koduSymfony2

$em = $this->getEntityManager(); 


        $dql = "SELECT p FROM AcmeBundle:UserProfile p 
          WHERE p.user_id = :user_id 
          ORDER BY p.createdAt DESC "; 
        $allProfiles = $em->createQuery($dql) 
            ->setParameter('user_id',$user_id) 
            ->setMaxResults(5) 
            ->getResult(); 
        return $allProfiles; 

tüm profilleri döndürür var.

i sonra benzersiz değil neden diyor) getSingleResult (kullanırsanız

+1

:

$singleProfile = $em->createQuery($dql) ->setParameter('user_id',$user_id) ->getSingleResult(); 

sonra hiçbir sonuç bu deneyin hatayı önlemek için setMaxResult (1) 'değiştirerek denediniz mi? –

+0

(1) de denedim ama aynı zamanda tek bir nesne değil tek bir nesne – user17

+0

setMaxResults (1) iyi çalışıyor ... –

cevap

4
   $allProfiles = $em->createQuery($dql) 
           ->setParameter('user_id',$user_id) 
           ->setMaxResults(1) 
           ->getResult(); 
       return $allProfiles[0]; 
+8

$ allProfiles geçersiz olup olmadığını ne olur? – sdespont

41

doğru yöntemdir:

$singleProfile = $em->createQuery($dql) 
        ->setParameter('user_id',$user_id) 
        ->getOneOrNullResult(); 
+3

Bu kabul edilen cevap olmalı. –