2017-05-02 2 views
1

Ich möchte zwei Seitenumbruch auf demselben Modell und derselben Seite mit unterschiedlichen Bedingungen in CakePHP 3 implementieren. Das folgende ist mein Code. Wie kann ich das erreichen?CakePHP 3 gleiches Modell mehrere Seitenumbruch

//Opened status pagination 
$opened_paginate = [ 
    'contain' => ['Comments'], 
    'conditions' => [ 
     'AND' => ['SupportTickets.status' => '1'] 
    ], 
    'order' => ['SupportTickets.id' => 'DESC'], 
    'limit' => 1 
]; 

// Closed status pagination 
$closed_paginate = [ 
    'contain' => ['Comments'], 
    'conditions' => [ 
     'AND' => ['SupportTickets.status' => '2'] 
    ], 
    'order' => ['SupportTickets.id' => 'DESC'], 
    'limit' => 1 
];     

$this->set('opened', $this->Paginator->paginate(
    $this->SupportTickets->find(), 
    $opened_paginate 
)); 
$this->set('closed', $this->Paginator->paginate(
    $this->SupportTickets->find(), 
    $closed_paginate 
)); 
+0

Were Sie planen eine gemeinsame Paginierung in der Ansicht? Da "geöffnet" und "geschlossen" wahrscheinlich eine andere Anzahl von Seiten haben, ist dies wahrscheinlich problematisch. Es wäre wahrscheinlich besser, AJAX zu verwenden, um Paging-Anfragen für jedes zu machen. – drmonkeyninja

Antwort

1

Sie können verschiedene Modelle in einer einzigen Aktion (siehe docs) Paginieren, aber ich glaube nicht, das auf dem gleichen Modell funktioniert.

Vielleicht könnten Sie einige komische Sachen mit Traits oder dies und das bauen, aber ich würde empfehlen, zu überdenken, was Sie versuchen zu tun und die Notwendigkeit für das gleiche Modell in einer einzigen Ansicht mehrere Male paginieren.

Sie mehrere Modelle in einem einzigen Controller-Aktion Paginieren kann, den Umfang Option sowohl in der Eigenschaft $ Paginieren der Steuerung und in dem Aufruf der Paginieren() -Methode:

// Paginate property 
public $paginate = [ 
    'Articles' => ['scope' => 'article'], 
    'Tags' => ['scope' => 'tag'] 
]; 

// In a controller action 
$articles = $this->paginate($this->Articles, ['scope' => 'article']); 
$tags = $this->paginate($this->Tags, ['scope' => 'tag']); 
$this->set(compact('articles', 'tags')); 
+1

Es sollte funktionieren, wenn Sie dieselbe Tabelle mit einem anderen Alias ​​erstellen. – ndm

+0

Dachte darüber auch nach. Aber hatte nicht die Zeit zu testen. – Mary

+0

okay. Vielen Dank. Werde es versuchen. – Sehdev