0

これは私の選択表です

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

これが私の質問表です

id |   content
 1       question1
 2       item2

これは私がやったことです.これで私はその選択肢で質問を表示することができました..私が今やりたいことは、ページごとに1つの質問のように、それをページ付けすることです.これを行う方法?あなたの助けは大歓迎です.ありがとう

$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);
4

2 に答える 2

1

ページネーションを行うには、find 呼び出しを使用するのではなく、代わりに paginate 呼び出しを使用し、$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'
    ),
);

次に、結果をそのような変数に定義するだけです

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

複数形 (Questions) の代わりに Singular モデル (つまり Question) をエイリアスとして使用することは良い習慣/慣習であるため、いくつかのエイリアスを変更しました。また、完全なモデル名 (GenExamItem ではなく GeneratedExamItem) を使用することをお勧めしますが、必要に応じてこれを元に戻すことができます。

于 2013-05-15T19:37:59.887 に答える