我的表格questions
包含id
,questions
和marks
。然后,我的表quizzes
包含id
和quiz_name
。我创建了名为question_quizzes
的桥表,其中包含来自id
表的quiz
和来自id
表的question
。如何在id
表格中将所有数据(questions
,marks
,questions
)显示为question_quizzes
的添加形式?
编辑:
这是questionQuizzes控制器中的existingQuestion函数。在existingQuestion函数中,我想显示所有问题表
class QuestionQuizzesController extends AppController
public function existingQuestion()
{
$query = $questionQuizzes->find('all')->contain('Questions');
foreach ($query as $questionQuizzes) {
echo $questionQuiz->question->id;
}
}
这是questionQuizzesTable
class QuestionQuizzesTable extends Table
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
var $name = 'QuestionQuizzes';
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('question_quizzes');
$this->belongsTo('Quizzes', [
'foreignKey' => 'quiz_id',
'joinType' => 'INNER'
]);
$this->belongsTo('Questions', [
'foreignKey' => 'question_id',
'joinType' => 'INNER'
]);
}
/**
* Returns a rules checker object that will be used for validating
* application integrity.
*
* @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
* @return \Cake\ORM\RulesChecker
*/
public function buildRules(RulesChecker $rules)
{
$rules->add($rules->existsIn(['quiz_id'], 'Quizzes'));
$rules->add($rules->existsIn(['question_id'], 'Questions'));
return $rules;
}
}
我已编辑了我的编码,但仍有错误"在null"上调用成员函数find()。有谁能够帮我??我被困了
答案 0 :(得分:0)
当您撰写$query = $questionQuizzes->find()
时,您尚未在任何地方声明$questionQuizzes
。变量不仅仅是完全形成的。因此,它是null,并且您正尝试在其上调用函数。从你得到的错误信息来看,这一切都应该是不言而喻的,当然它会引导你直接进入相关界限? (@urfusion链接中提供的代码片段仅提供引用$articles
,但这些代码在没有上下文的情况下显示,并假设您已事先创建了变量。)
修复方法是使用$this->questionQuizzes->find()
。 questionQuizzes
的{{1}}成员应该由Cake初始化,这要归功于你在初始化函数中所做的事情。本手册的相关部分将是Query Builder上的部分。
请注意,蛋糕约定会让您将表命名为questions_quizzes,而不是question_quizzes;两部分都是复数。或者quizzes_questions也会起作用,对我个人更有意义(毕竟它跟踪测验的问题)。您选择的名称没有任何问题,但如果您更完整地遵循惯例,示例可能更容易适合您的代码。