Связь «один ко многим» для 3 моделей в CakePHP

#cakephp

#cakephp

Вопрос:

У меня есть три модели: пользователь, вопрос, ответ. У пользователя много вопросов, а на вопросы есть много ответов, но CakePHP показывает мне ошибку в предложении WHERE? Как установить связь с тремя моделями?

Я пытаюсь, как

Пользовательская модель

 var $hasMany = array(
 'Question' => array(
 'className' => 'Question',
 'foreignKey' => false,
 'conditions' => 'Question.user_id = User.id'
 )
);
  

Модель ответа

 var $hasMany = array(
 'Answer' => array(
 'className'=> 'Answer',
 'foreignKey'=> false,
 'conditions'=> array('Question.id = Answer.question_id')
 )
);
  

Модель ответа:

 var $belongsTo = array(
    'Question' => array(
        'className'=> 'Question',
        'foreignKey'=> false,
        'conditions'=> array('Question.id = Answer.question_id')
    )
);
  

Заранее спасибо за вашу помощь. Извините за мой плохой английский.

Комментарии:

1. Почему вы устанавливаете ForeignKey в значение false и определяете (или, по крайней мере, пытаетесь) эквивалентные условия? CakePhp shows me error in WHERE clause <- какая ошибка? Где ваш вызов поиска? Также ответьте, что любой ответ не сработает.

Ответ №1:

Я думаю, что это проблема дизайна, а не техническая,

Попробуйте это :

Отношения

 users - can take/"be taken by" many - exams

exams - contain/"belongs to" many - questions
  

Таблицы

пользователи: идентификатор — и т.д.

вопросы: id — question — category / topic_id и т.д.

экзамены: id — user_id — question_id — answer и т.д.

и, наконец, используйте hasMany через