多列或单个文本字段?

时间:2013-12-18 13:53:19

标签: cakephp database-design

我的问题是关于一个可能对未来产生一些影响的逻辑问题:

我已经有3个型号(房间,纪律,系列)和一个名为打印输出的模型。 在打印输出中,我可以选择标题图像并定义标题文本,但如何定义要使用的三种模型中的哪一种。

我看到两种可能性:

  • 打印输出中的一个专栏,适用于每个型号(房间,纪律,系列)
  • 我单独手动解析的单个文本字段。

这两种方式之间是否存在不利因素。建议的是什么。

我知道它更符合逻辑而不是开发问题,我仍然希望在项目的早期阶段选择更好的方法。

欢呼endo

2 个答案:

答案 0 :(得分:1)

执行此操作的常用方法是在打印输出表中使用foreign_keymodel字段(本页中的详细信息):

http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#associations-linking-models-together

'foreign_key'是“其他”模型的id,'model'是其他模型的名称。

因此,您的打印输出属于所有其他3个模型和关联,您指定'Printout.model'=>的条件'房间'(或任何型号)。

答案 1 :(得分:0)

请提供有关您的桌面结构的更多信息,您的模型是如何连接的(哪一个是父母,哪一个是孩子,以及您想要做什么),所以我可以为您提供更好的答案。

无论如何,您最初不必绑定模型,您可以在控制器逻辑中执行此操作:

$this->PrintOut->bindModel(array(
    'belongsTo' => array(
        'Room' => array(
            'className' => 'Room',
            'foreignKey' => 'room_id',
        ),
    ),
));

或者,如果房间属于打印输出:

$this->PrintOut->bindModel(array(
    'hasOne' => array(
        'Room' => array(
            'className' => 'Room',
            'foreignKey' => 'printout_id',
        ),
    ),
));

您的解决方案可能也是其他内容,但我需要有关您的模型所做的更多信息。

修改

现在我看到你的问题可能有点不同......你应该检查条件的绑定模型。