¿Cómo paginar en cakephp usando find?

Esta es mi tabla de opciones

id | question_id  | content 
1     1               bee
2     1               fly
3     1               dog
4     2               cat
5     2               bat
6     2               wasp

y esta es mi tabla de preguntas

id |   content
 1       question1
 2       item2

Esto es lo que hice. Con esto, podría mostrar la pregunta con sus opciones. Lo que quiero hacer ahora es paginarla, más como 1 pregunta por página. ¿Cómo hacer esto? Su ayuda será muy apreciada. Gracias.

$options['fields'] = array('questions.id','questions.content');
$options['joins'] = array(  
        array(
            'table' => 'generated_exam_items',
            'alias' => 'GenExamItems',
            'type' => 'inner',
            'conditions' => array(
                'GenExamItems.generated_examination_id' => 25
            )
        ),
        array(
            'table' => 'questions',
            'alias' => 'Questions',
            'type' => 'inner',
            'conditions' => array(
                 'Questions.id = GenExamItems.questions_id'
            )
        ),

    );
    $options['conditions']=array('GenExamItems.generated_examination_id' => 25,'Question.id=GenExamItems.questions_id');
   $question_detail = $this->Question->find('all',$options);
   $this->set('questions',$question_detail);

preguntado el 15 de mayo de 13 a las 04:05

2 Respuestas

$this->paginate = array(
            'Claim' => array(
                'conditions' => array('Claim.user_id' => $user['User']['id']),
                'fields'=>array('id','description','title','support_count','oppose_count','user_id','created'),
                'limit' => 5,
                'paramType' => 'querystring'
        ));
        $claim = $this->paginate('Claim');
        $this->set('claim',$claim);

Respondido 19 Oct 13, 15:10

Para paginar, no debe usar una llamada de búsqueda, sino una llamada de paginación, configure las opciones usando $this->paginate.

$this->paginate = array(
    'joins' => array(
        array(
            'table' => 'generated_exam_items',
            'alias' => 'GeneratedExamItem',
            'type' => 'INNER',
            'conditions' => array(
                'GeneratedExamItem.generated_examination_id' => 25
            )
        ),
        array(
            'table' => 'questions',
            'alias' => 'Question',
            'type' => 'INNER',
            'conditions' => array(
                'Question.id = GeneratedExamItem.question_id'
            )
        )
    ),
    'conditions' => array(
        'GeneratedExamItem.generated_examination_id' => 25,
        'Question.id = GeneratedExamItem.question_id'
    )
    'fields' => array(
        'Question.id',
        'Question.content'
    ),
);

A continuación, simplemente defina los resultados a una variable como tal

$this->set('questions', $this->paginate());

He cambiado un par de sus alias porque es una buena práctica/convención utilizar el modelo Singular (es decir, Pregunta) en lugar del plural (Preguntas) como alias. Además, es una buena práctica usar el nombre completo del modelo (GeneratedExamItem, no GenExamItem), pero puede volver a cambiarlo si lo prefiere.

contestado el 15 de mayo de 13 a las 20:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.