Не может использовать CakePHP 3

Я хочу выбрать данные вопросов из таблицы викторин. И данные вопросов тоже будут объединены с таблицей ответов. Поэтому я использовал код 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'])

Все в порядке.
Пожалуйста, помогите мне исправить это.

3

Решение

Если я не ошибаюсь, вам просто нужно включить вопросы и ответы в QuizDetails, если это так, попробуйте:

$questions = $this->QuizDetails->find()->contain(['Questions.Answers'])
->where(['QuizDetails.quiz_id' => $id]);
0

Другие решения

Из-за двух таблиц не связаны. Вы должны определить условие для подключения.

$this->belongsTo('Questions', [
'className' => 'Publishing.Questions',
'conditions' => ['A.id' => 'B.id'], //add this
]);

P / s: Я являюсь рекламным бланком FB Cakephp Viet, который отвечает на ваш заданный там вопрос.

0

проблема из: ‘className’ => ‘Publishing.Questions’
И я изменяю файл QuizDetailsTable на:

$this->table('quiz_details');
$this->belongsTo('Questions', [
'className' => 'Publishing.Questions',
'foreignKey' => 'question_id'
]);

Все в порядке

Спасибо всем

0

Вы должны определить оба пути.

этот …

$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']);
0
По вопросам рекламы [email protected]