Я хочу выбрать данные вопросов из таблицы викторин. И данные вопросов тоже будут объединены с таблицей ответов. Поэтому я использовал код php:
$questions = $this
->QuizDetails->find()
->contain([
'Questions' => function($q) {
return $q->contain(['Answers']);
}
])
->where(['QuizDetails.quiz_id' => $id]);
файл ответов
$this->table('answers');
$this->belongsTo('Questions', [
'className' => 'Publishing.Questions',
'foreignKey' => 'question_id',
]);
файл QuizDetailsTable:
$this->table('quiz_details');
$this->belongsTo('Questions', [
'className' => 'Publishing.Questions',
'foreignKey' => 'question_id',
]);
Итак, когда я запускаю его, из-за ошибки
Вопросы не связаны с ответами
Если я использую:
$question = $this->Questions->find()->contain(['Answers'])
Все в порядке.
Пожалуйста, помогите мне исправить это.
Если я не ошибаюсь, вам просто нужно включить вопросы и ответы в QuizDetails, если это так, попробуйте:
$questions = $this->QuizDetails->find()->contain(['Questions.Answers'])
->where(['QuizDetails.quiz_id' => $id]);
Из-за двух таблиц не связаны. Вы должны определить условие для подключения.
$this->belongsTo('Questions', [
'className' => 'Publishing.Questions',
'conditions' => ['A.id' => 'B.id'], //add this
]);
P / s: Я являюсь рекламным бланком FB Cakephp Viet, который отвечает на ваш заданный там вопрос.
проблема из: ‘className’ => ‘Publishing.Questions’
И я изменяю файл QuizDetailsTable на:
$this->table('quiz_details');
$this->belongsTo('Questions', [
'className' => 'Publishing.Questions',
'foreignKey' => 'question_id'
]);
Все в порядке
Спасибо всем
Вы должны определить оба пути.
этот …
$this->table('answers');
$this->belongsTo('Questions', [
'className' => 'Publishing.Questions',
'foreignKey' => 'question_id',
]);
… и это:
$this->table('question');
$this->hasMany('Answers', [
'className' => 'Publishing.Answers',
'foreignKey' => 'question_id',
]);
В вашем примере вы можете сделать только это:
$answer = $this->Answers->find()->contain(['Questions']);