2009-05-14 10 views
6

मेरे पास एक उपयोगकर्ता मॉडल है जो मुझे नवीनतम उपयोगकर्ताओं को आउटपुट के रूप में देता है। डेटाबेस में सभी उपयोगकर्ताओं के बजाय मुझे 200 रिकॉर्ड केवल आउटपुट करने के लिए रिकॉर्ड को कैसे सीमित कर सकता हूं?मैं केकपीएचपी में एक विशिष्ट संख्या में खोज को कैसे सीमित कर सकता हूं?

उत्तर

12

According to the documentation, find() विधि का दूसरा तर्क $params सरणी है।

इस सरणी में पास होने के संभावित मानों में से एक limit कुंजी है। तो आप निम्न कार्य कर सकते हैं:

$users = $this->User->find('all', array('limit' => 200)); 
+0

मदद कर सकता है मेरे पास है सरणी पेजिंग के लिए ('सीमा' => 21, 'पेज' => 1) की तरह एक पृष्ठ .. अगर मैं 200 के लिए वहाँ सीमा बदलने तो यह एक में 200 उपयोगकर्ताओं पृष्ठांकन में 21 उपयोगकर्ताओं केवल पृष्ठ ... इस मामले में उचित अंकन के साथ कैसे सीमित करें ?? –

+3

यदि आप चाहते हैं कि आपके डेटा को पैगनेट करें, अंतर्निहित पेजिनेशन विधियों का उपयोग करें, नहीं()। http://book.cakephp.org/view/165/Controller- 'सीमा' => 'ए, बी' का उपयोग करने के बजाय सेटअप –

-1

इस प्रकार उपयोगकर्ता के मॉडल फ़ाइल को खोलने और कार्य करें:

आप

वर $ नामित संबंध चर में 'सीमा' संपत्ति को बदलना होगा है मैनी = सरणी ('एबस' => सरणी ('className' => 'abus', 'विदेशीकी' => 'user_id', 'निर्भर' => झूठी, 'स्थितियां' => '', 'फ़ील्ड' => '', 'ऑर्डर' => '', 'सीमा' => '200', 'ऑफ़सेट' => '', 'अनन्य' => '', 'finderQuery' => '', 'counterQuery' => ''));

या आप भी इस बाहर की कोशिश कर सकते हैं ...

अपने उपयोगकर्ताओं नियंत्रक में यह पसंद करने के लिए $ पृष्ठ पर अंक लगाना निर्धारित किया है।

var $paginate = array('limit' => 200);

रिकॉर्ड 200 तक ही सीमित रहेगा अब भी आप पृष्ठ पर अंक लगाना का उपयोग करें।

8

"मेरे पास एक पृष्ठ में 21 उपयोगकर्ताओं को पेजिंग के लिए सरणी ('सीमा' => 21, 'पृष्ठ' => 1) की तरह है .. अगर मैं 200 तक सीमा बदलता हूं तो यह 200 उपयोगकर्ताओं को एक में बदल देता है केवल पृष्ठ ... इस मामले में उचित अंकन के साथ कैसे सीमित करें ?? - अज्ञात मई 14 '0 9 7:22 पर

हाँ आप किसी के उल्लेख के रूप में केकेपीएचपी पेजिनेशन सहायक का उपयोग कर सकते हैं। लेकिन कुछ ऐसे मामले हो सकते हैं जहां आप अपना खुद का पेजिनेशन करना चाहते हैं या प्रति कॉल पुनर्प्राप्त रिकॉर्ड्स की संख्या सीमित करें। यहां क्या है इसके लिए मैंने इस तरह की एक स्थिति को कैसे संभाला है।

उदाहरण के लिए कहें कि आप प्रत्येक पृष्ठ के रिकॉर्ड्स की एक निश्चित संख्या पुनर्प्राप्त करना चाहते हैं, फिर: $ start = 0; -> यह पहले से शुरू होने वाले रिकॉर्ड्स को पुनः प्राप्त करने के लिए है।यदि आपको उदाहरण के लिए कहना है, तो 31 से शुरू करें, फिर $ start = 30;

तो, $ = 0 प्रारंभ करें; $ लंबाई = 20;

// To retrieve a number of Products per page 
      $products = $this->Product->find('all', array(
              'order' => 'product_number ASC', 
              'limit' => $start.','.$length, 
              'recursive' => -1 
              ) 
             ); 
+8

आपको 'ऑफ़सेट' => $ प्रारंभ, 'सीमा' => $ लंबाई का उपयोग करना चाहिए ' –

1

तुम भी

$results = $this->Model->find('all', 
     array('limit'=>10, 
      'order'=>array('date DESC'))); 
2
array(
    'conditions' => array('Model.field' => $thisValue), //array of conditions 
    'recursive' => 1, //int 
    //array of field names 
    'fields' => array('Model.field1', 'DISTINCT Model.field2'), 
    //string or array defining order 
    'order' => array('Model.created', 'Model.field3 DESC'), 
    'group' => array('Model.field'), //fields to GROUP BY 
    'limit' => n, //int 
    'page' => n, //int 
) 

सीमा से बाहर इस कोशिश कर सकते हैं: // हम की तरह कुछ हो जाएगा 20 रिकॉर्ड पहले रिकॉर्ड

और कोड से शुरू पुनः प्राप्त करने के लिए जा रहे हैं * पृष्ठ = 200 पृष्ठों में अपने सहज दृश्य के अनुसार अपने मूल्य निर्धारित करें। यह

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

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