2013-12-18 17 views
2

我的问题是关于一个逻辑问题,它可能在未来会产生一些影响:多列或单个文本框?

我已经准备好了3个模型(房间,学科,系列)和一个叫做打印输出的模型。 在打印输出中,我可以选择标题图像并定义标题文本,但是如何定义要使用的三种模型中的哪些。

我看到两种可能性:

  • 在打印输出的自己的专栏,每一个模型(室,纪律,意甲)
  • 一个文本字段这是我后来手工解析。

在那里disadavantages betweeen这两种方式。有什么建议。

我知道它更多的是比一个开发问题的逻辑,我还是想选择在项目的早期阶段,更好的办法。

欢呼内

回答

1

常见的方式做,这是使用打印输出表foreign_keymodel领域(更多细节在本页面):

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

“foreign_key”是id “其他”模型,“模型”是另一个模型的名称。

所以你的打印输出属于关联所有3个车型,并在协会指定“Printout.model” =>“房间”(或其他模式)的条件。

+0

那是一个解决方案,我还没有想过。很多比! –

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', 
     ), 
    ), 
)); 

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

编辑

现在我看到你的问题可能会有点不同......你应该检查结合机型的条件。

+1

这不是很好的做法,并且没有理由为此类型的关联使用bindModel。除非有理由这样做否则应该在模型中处理关联。在这种情况下,这是非常简单的关联。 – Dave

+0

是的,我起初误解了这个问题,但是把它留在那里作为有用的信息。但为什么在飞行中绑定一个不好的做法? –

+0

控制器做模型的逻辑并不理想,这是不使用bindModel的东西,当有显然是没有必要的动态关联正常的协会能够处理好的做法。 – Dave