2013-06-13 16 views
11

Wenn Sie Datensätze mit $this->paginate('Modelname') mit einigen Seite limit abrufen, wie erhalten Sie die Gesamtzahl der Datensätze abgerufen?CakePHP: wie die Gesamtzahl der Datensätze mit Paginierung abgerufen

Ich möchte diese Gesamtanzahl in der Ansicht anzeigen, aber count($recordsRetrieved) gibt die Nummer zurück, die nur auf der aktuellen Seite angezeigt wird. Also, wenn die Gesamtzahl der abgerufenen Datensätzen 99 und limit ist auf 10, gibt es 10, nicht das 99.

Antwort

17

können Sie debug($this->Paginator->params());

Dies wird Ihnen

/* 
Array 
(
    [page] => 2 
    [current] => 2 
    [count] => 43 
    [prevPage] => 1 
    [nextPage] => 3 
    [pageCount] => 3 
    [order] => 
    [limit] => 20 
    [options] => Array 
     (
      [page] => 2 
      [conditions] => Array 
       (
       ) 
     ) 
    [paramType] => named 
) 
*/ 

Der endgültige Code für PHP> = 5.4:

$this->Paginator->params()['count'];

für PHP-Versionen kleiner als 5.4:

$paginatorInformation = $this->Paginator->params(); 
$totalPageCount = $paginatorInformation['count']; 
0

hier, wie ich die Zählung von meinem Controller

finden Diese * bekam ist für CakePHP 2.3. Es verwendet einen View-Helfer, der normalerweise ein No-No im Controller ist, da er gegen MVC verstößt, aber in diesem Fall halte ich es für sinnvoll, den Code DRY zu behalten.

// Top of file 
App::uses('PaginatorHelper', 'View/Helper'); 

// Later in controller method 
$paginatorHelper = new PaginatorHelper(new View(null)); 
$records = $this->paginate(); 
$count = $paginatorHelper->params()['count']; 

* Ich weiß, dass die OP über aus der Sicht gefragt, aber ich glaube, wenn Arzon Barua Antwort ist, Menschen zu helfen (obwohl ich denke, es sagt Ihnen, nur die Zählung fordert, nicht die tatsächliche Anzahl als die OP will), dann könnte das auch helfen.

0

Auf diese Weise erhalten Sie Informationen zur Paginierung über den Controller.

class YourController extends Controller{ 
    $helpers = array('Paginator'); 
    public fn(){ 
    $view = new View(null); 
    var_dump($view->paginator->params()); 
    } 
} 
Verwandte Themen