Bonjour, je cherche le moyen de créer une pagination par client mais ce client contient plusieurs tickets.
Le souci c'est qu'avec une valeur de pagination de 3 par page, pour 9 clients comptant environ 20 tickets chacun, la pagination affiche 3 tickets par pages du même client, hors je souhaiterais plutôt afficher 3 clients (avec N tickets) par page.

Mon site est basé sur le tuto "créer un site de A à Z.

voici mon code :

function admin_index(){
        $perPage = 3;
        $condition = array('id'>0);
        $conditionpagin = array('ticket.client_id=client.id');
            $this->loadModel('Client');
            $d'client'] = $this->Client->find(array(
                'fields' => '
                client.id,
                ticket.id as ticketid,
                ticket.client_id as ticketclientid
                ',
                'order' => 'client.id,ticket.id',
                'conditions' => $condition,
                'limit' => ($perPage*($this->request->pagin-1)).','.$perPage,
                'join' => array(
                    'ticket as Ticket'=>'Ticket.client_id=Client.id'
                    )
));
$d'total'] = $this->Client->findCount($condition);
$d'pagin'] = ceil($d'total'] / $perPage);
debug($d);
$this->set($d);
}

2 réponses


Tu peux pas faire comme ça, tu dois d'abord récupérer la liste de tous tes clients et ensuite faire une boucle dans laquelle tu auras une requête avec la condition where Client.id=ton_id_client_recupere

Ensuite ta pagination tu n'as plus qu'à passer ton id client dans l'url

dreeck
Auteur

Merci pour ta réponse, j'ai dû en effet passer par des boucles, des compteurs et des conditions.