我有包含questionsidquestions的表marks。然后,我有了包含quizzesid的表quiz_name。我创建了名为question_quizzes的网桥表,其中包含id表中的quizid表中的question。如何将id表中的所有数据(questionsmarksquestions)显示为question_quizzes的添加形式?

编辑:

这是questionQuizzes控制器内部的现有Question函数。在现有的问题功能中,我想显示所有问题表

 class QuestionQuizzesController extends AppController
   public function existingQuestion()
  {
    $query = $questionQuizzes->find('all')->contain('Questions');
    foreach ($query as $questionQuizzes) {
        echo $questionQuiz->question->id;
    }
}


这是问题测验表

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()”。有谁能够帮助我??我被困住了

最佳答案

编写$query = $questionQuizzes->find()时,没有在任何地方声明$questionQuizzes。变量不仅会完全形成。因此,它为空,您正在尝试在其上调用一个函数。从收到的错误消息来看,所有这些都应该是不言而喻的,可以肯定地将您定向到了所讨论的行吗? (@urfusion链接中有一些代码片段,它们仅引用了$articles,但是这些代码片段没有上下文显示,并假定您已预先创建了变量。)

解决方法是使用$this->questionQuizzes->find()questionQuizzes$this成员应该已经由Cake进行了初始化,这要归功于您在initialize函数中所做的事情。手册的相关部分将是Query Builder上的部分。

请注意,Cake约定会让您将表命名为questions_quizzes,而不是question_quizzes;两个部分都是复数。或quizzes_questions也可以使用,并且对我个人而言更有意义(毕竟,它跟踪测验的问题)。您选择的名称没有错,但是如果您更完全地遵循约定,示例可能会更容易地适合您的代码。

关于php - 从另一个模型cakephp 3.5获取数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47654910/

10-13 07:32