2009-11-26 3 views
1

У меня есть следующая схема: Мой сайт - мелочи, поэтому каждый вопрос «hasMany» отвечает, но вопрос также «hasOne» правильный ответ, который также представлен моделью ответа. Мне еще предстоит проверить это, но инстинкт моего программиста говорит мне, что полученный массив будет излишним, и он не будет отделять правильный ответ от остальных.Сопоставление модели дважды, CakePHP

Вопрос в том, как я могу представить это в моделях и в базе данных, есть ли лучший способ представить эти отношения?

ответ

1

Или просто посмотреть на этой странице, очень полезный;) http://www.charlesgarwood.com/blog/?p=23

+0

Это то, что действительно решило мою проблему, мои извинения Джимми Стенке, но я предпочитаю уже реализованное решение. – fixmycode

1

Ну, я могу придумать два способа сделать это.

  1. Вопрос hasMany Ответ, в то время как вопрос belongsTo правильного ответа (есть answer_id для правильного ответа на этот вопрос, так что это будет выглядеть Question(id, answer_id) и Answer(id, question_id))

  2. Есть флаг на ответ, который отражает, является ли он правильным или нет.

Я думаю, что выбрать более личное мнение, но я бы, вероятно, пойти на номер 2, даже если 1 является более правильным из реляционного мышления, но это уменьшает избыточность, и вы все еще можете найти для него в ответах.

Конечно, если вопрос может содержать более одного правильного ответа, то вариант № 1 не может быть и речи.

0

Другим маршрутом будет создание двух моделей, сопоставленных с одной таблицей. У вас есть флаг в ответе, который указывает, что это правильный ответ или нет.

Поскольку вы не будете переключаться, какой ответ правильный, то правильное отображение правильности во время создания будет прекрасным, и вы получите несколько правильных ответов. С помощью системы взвешивания вы можете даже оценить правильность ответа.

С двумя отдельными моделями обязательно установите условия для отношений или самой модели, чтобы модель CorrectAnswer находила ответы только с заданным полем Reply.correct = true. Тогда у вас может быть общая модель ответа, у которой нет такого условия. В модуле «Вопрос» вы даже можете использовать только флаги ассоциации для извлечения обоих типов.

0

Попробуйте спросить у cakeqs.org это CakePHP родственный портал. Но определенно вы должны просто иметь разные псевдонимы для обеих ассоциаций

Смежные вопросы