2011-07-28 5 views
13

मैं पंक्तियों को सीमित करने की कोशिश कर रहा हूं जो सिद्धांत की FindAll विधि से वापस आती हैं।सिद्धांत के लिए पंक्तियों को सीमित करना सभी विधि

public function getActiveUsersByPoint($limit = 100){ 
    $users = $this->userRepository->findAll(); 

    return $users; 
} 

यह कोड काम करता है लेकिन मैं परिणाम सीमित करने के लिए $ सीमा चर का उपयोग नहीं कर सकता। मैं यह कैसे कर सकता हूं?

उत्तर

56

EntityRepository # findBy() विधि अतिरिक्त orderings, सीमा स्वीकार करता है और के रूप में दूसरा ऑफसेट चौथे मापदंडों के:

$tenUsers = $em->getRepository('MyProject\Domain\User') 
       ->findBy(
        array('age' => 20),  // $where 
        array('name' => 'ASC'), // $orderBy 
        10,      // $limit 
        0       // $offset 
       ); 
1

यदि आपका प्रश्न सिद्धांत 1.x के लिए है, तो FindAll का अर्थ है "सभी खोजें"। परिणामों को सीमित करने के लिए, DQL का उपयोग करें:

$q = Doctrine_Query::create() 
    ->from('UserRepository') 
    ->limit($limit); 
$users = $q->execute(); 
+0

यह सिद्धांत 1.x है ... मेरा जवाब 2.x है –

5

आदेश सभी परिणामों को खोजने के लिए, आप findBy विधि करने के लिए एक खाली सरणी पास करना चाहिए, मुझे लगता है कि तुम क्या बहाना है:

$users= $em->userRepository->findBy(
      array(), 
      array('id' => 'DESC'), 
      10, 
      0 
     ); 

प्रथम परम एक खाली सरणी है, जो यह findAll() के बराबर है है, तो आदेश (मैं आईडी सा के रूप में डाल दिया mple), तो सीमा और अंत में ऑफ़सेट।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^