将模型关联两次,CakePHP

时间:2009-11-26 22:07:07

标签: model-view-controller cakephp model relationship

我有以下方案:我的网站是一个琐事游戏,所以每个问题“hasMany”答案,但一个问题也“hasOne”正确答案也由答案模型表示。 我还没有对此进行测试,但我的程序员的直觉告诉我,检索到的数组将是多余的,并且不会将正确的答案与其余部分分开。

我的问题是,我如何在模型和数据库中表示这一点,是否有更好的方式来表示这种关系?

4 个答案:

答案 0 :(得分:1)

好吧,我可以提出两种方法来实现它。

  1. 一个问题有多个答案,而一个问题属于一个正确的答案(在问题中有正确答案的answer_id,所以它看起来像Question(id, answer_id)Answer(id, question_id)

  2. 在答案上有一个标志,表明它是否正确。

  3. 我认为选择哪一个更多是个人观点,但我可能会选择2号,即使1在关系思维中更正确,但它会减少冗余,你仍然可以在答案。

    当然,如果一个问题可以有多个正确的答案,那么第1号选项是不可能的。

答案 1 :(得分:1)

或者只看这个页面,非常有用;)http://www.charlesgarwood.com/blog/?p=23

答案 2 :(得分:0)

另一种方法是创建映射到同一个表的2个模型。在答案中有一个标志,表明它是正确的答案。

由于您不会切换哪个答案是正确的,因此在创建时将正确性映射到标志很好,并且可以让您有多个正确的答案。使用加权系统,您甚至可以评估答案的正确性。

使用两个单独的模型,请确保在关系或模型本身中设置条件,以便CorrectAnswer模型仅查找Answer.correct = true字段集的答案。然后,您可以拥有一个没有这种条件的通用答案模型。在问题模型中,你甚至可以使用纯粹的关联标志来获取这两种类型。

答案 3 :(得分:0)

尝试在cakeqs.org上询问它是与cakephp相关的门户网站。 但是,你应该只为两个关联

设置不同的别名