Nasıl CakePHP belirli bir sayıya find sınırlayabilir?

6 Cevap php

Bana çıkış olarak son kullanıcı veren bir kullanıcı modeli var. Nasıl yerine veritabanındaki tüm kullanıcıların sadece çıkışı bana 200 kayıtlar için kayıt sınırlayabilir?

6 Cevap

According to the documentation, find() yöntemine ikinci argümanı $params dizidir.

Bu dizideki geçmek mümkün değerlerden biri bir limit anahtarıdır. Yani aşağıdaki yapabilirsiniz:

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

"i have it like array('limit' => 21, 'page' => 1) for paging 21 users in one page.. if i change the limit there to 200 then it paginates 200 users in one page only...in this case how to limit along with proper pagination?? – Anonymous May 14 '09 at 7:22"

birisi de belirtildiği gibi evet cakePHP pagination yardımcısı kullanabilirsiniz. Ama kendi sayfalama yapmak veya sadece çağrı başına alınan kayıtların sayısını sınırlamak isteyen bazı durumlar olabilir. Ne burada değer Ben böyle bir durum ele nasıl için.

Say for example you want to retrieve a certain number of records per page, Then: $start = 0; -> this is in order to start retrieving records starting from the first one. If you need to say for example, start from the 31st, then $start = 30;

So, $start = 0; $length = 20; // we are going to retrieve 20 records starting from the first record

Ve kod gibi bir şey olacaktır:

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

Find () ile paginate etmeyin.

Kek Numaralandırma: http://book.cakephp.org/2.0/en/core-libraries/components/pagination.html

Ayrıca bu deneyebilirsiniz

$results = $this->Model->find('all', 
       array('limit'=>10, 
             'order'=>array('date DESC')));

Bu bir sayfada rekor sınırlayacaktır ama tüm kayıt almak gibi sınır = 200 çalışmaz ..

kullanıcı model dosyasını açın ve aşağıdaki gibi yapın:

Eğer adında ilişki değişkeni içinde 'sınır' özelliğini değiştirmek gerekir

var $hasMany = array( 'Abus' => array('className' => 'Abus', 'foreignKey' => 'user_id', 'dependent' => false, 'conditions' => '', 'fields' => '', 'order' => '', 'limit' => '200', 'offset' => '', 'exclusive' => '', 'finderQuery' => '', 'counterQuery' => '' ) );

YA da bu deneyebilirsiniz ...

Lütfen kullanıcılar denetleyicisi bu sevmeye $ Sayfalandır'ı ayarlayın.

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

Eğer Sayfalandır'ı kullanmak yerde kayıtları şimdi 200 ile sınırlı olacak.