2012-08-09 14 views
7

में DQL का उपयोग करके एकल परिणाम कैसे प्राप्त कर सकता हूं मैं अंतिम उपयोगकर्ता प्रोफ़ाइल प्राप्त करना चाहता हूं। लेकिन मैं इसे डीक्यूएल में करने में सक्षम नहीं हूं। मैं इस कोडमैं symfony2

$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; 

यह सब प्रोफाइल रिटर्न दिया है।

तो मैं getSingleResult (का उपयोग करें) तो यह अद्वितीय नहीं परिणाम कहते हैं

+1

क्या आपने 'setMaxResult (1)' को बदलकर कोशिश की? –

+0

मैंने परिणाम (1) के साथ-साथ कोशिश की लेकिन यह भी सरणी को सुरक्षित नहीं किया गया एकल ऑब्जेक्ट – user17

+0

setMaxResults (1) ठीक काम करता है ... –

उत्तर

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

क्या $ सभी प्राइफाइल शून्य हो गया है? – sdespont

41

सही विधि है:

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

त्रुटि से बचने के तो कोई परिणाम नहीं इस प्रयास करें:

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

यह स्वीकार्य उत्तर होना चाहिए। –