数据模型中的关联,一行如何指向不同的外键?

时间:2012-03-10 05:47:43

标签: cakephp cakephp-appmodel

案例:

我真的很想到在我的数据模型中连接两个表的正确方法,考虑这个例子(从问题中抽象出来)

说我有:

  • 某个名为'附件'的模型,其中包含'attachment_id','attachment_title',....等等,
  • 和另一个名为'问题'的模型,其中包含'question_id','attachment_id'(外国),'question_option1','question_option2','question_option2','correct_answer'等。

我已经知道每个“问题”可能都附有问题,所以到目前为止我们有这些关系:

问题模型:

var $belongsTo = array(
    'Attachment' => array(
        'className' => 'Attachment',
        'foreignKey' => 'attachment_id',
        'conditions' => '',
        'fields' => '',
        'order' => '',
    ),

在附件模型中我有:

var $hasOne = array(
    'Question' => array(
        'className' => 'Question',
        'foreignKey' => 'attachment_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),

问题:

然后出现了新的要求:在“问题”中为每个选项放置图像,因此我们可以显示图像而不是文本,这意味着我们在“问题”表中添加新行(至少我做了什么)称为'question_option1_attachment','question_option2_attachment','question_option3_attachment',这些单元格将包含指向attachment_id的外键。

肯定这对我不起作用:

'foreignKey' => array('attachment_id', 'question_option1_attachment', 'question_option2_attachment', 'question_option3_attachment') ...

问题:

如何将多行指向不同外键的一个问题之间的关联? 你有什么建议,我需要以某种方式重新定义整个协会吗?

1 个答案:

答案 0 :(得分:0)


根据上面指定的情况,我认为您将需要创建另一个表来保存定义不同问题和外键之间映射的数据。
此表将只显示与问题映射的ID,并且在调用模型时,您需要将表格考虑在内,因此请检查与问题相关的键是什么。这些将有一个问题的多个条目,因此您必须使用JOINS来获取适当的数据。