这是我的选择表
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个问题。怎么做?你的帮助会很大appreciated.Thanks
$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);
有人请帮助我。!!我不知道该怎么做,我一周就坚持住了这个......
答案 0 :(得分:0)
你可以使用关系船与彼此模型
就像在这里我只是添加骨架代码,你需要用真实的类名
来验证它在Question
模型中写下这种关系
class Question extends AppModel {
public $hasMany = array(
'Choice' => array(
'className' => 'Choice',
)
);
在Choice
模型中,您可以定义类似
class Choice extends AppModel {
public $belongsTo = 'Question';
}
在控制器中,如果你想通过它的选择获取特定的问题,你可以写下面的查询
$question_detail = $this->Question->find('first', array(
'conditions' => array('Question.id' => $question_id)
));
让我知道我是否可以帮助你更多
答案 1 :(得分:0)
假设您在两个模型上都有正确的关联。
我将在视图中显示一个问题的代码。
如果您使用自动方式cake provides(请参阅“创建表单元素”部分) 在你的控制器中,你必须得到选择
$this->set('choices', $this->Question->Choice->find('list',
array('conditions'=>
array('question_id'=>$your_question_id))));
在您看来,您必须
echo $this->Form->input('choice_id', array('type'=>'radio'));
那应该会自动将选项显示为无线电(不确定您想要什么类型的输入)
如果由于某种原因,自动方式不起作用(如果发生这种情况,请务必检查模型的关联),那么您可以传递选择数组(如前所示在控制器上获取它们)并通过它作为参数
echo $this->Form->input('choice_id', array('type'=>'radio',
'options'=>$choices));
注意:如果广播标签显示的是ids而不是内容,则您必须更改displayField个选项。
答案 2 :(得分:0)
这就是我做的。它返回了问题和相应的选择。我希望我能够有这个人。谢谢。
public function take($id=null) {
$this->request->params['named']['page'] = (isset($this->request->params['page'])) ? $this->request->params['page'] : 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' => 40
)
),
array(
'table' => 'questions',
'alias' => 'Questions',
'type' => 'inner',
'conditions' => array(
'Questions.id = GenExamItems.questions_id'
)
),
);
//$options['contains']='Choice';
$options['conditions']=array('Question.id = GenExamItems.questions_id');
$options['order']=array('rand(Question.id)');
$options['limit']=1;
$this->paginate=$options;
$data = $this->paginate('Question');
$this->set('questions',$data);
}