0

我正在将我的一个旧的手工制作的应用程序重写为 CakePHP 2.0,我遇到了这个旧的、不断重复的模型设计困境。

这是目标设计:

  • Order 有很多 OrderEntries
  • OrderEntry 有字段 [数量,类型]
  • ProductEntry 使用字段 [product_id、数量、重量] 扩展 OrderEntry
  • ShipmentEntry 使用字段 [total_weight、country_id、city、address 等] 扩展 OrderEntry
  • DiscountEntry 使用字段 [discount_code、parent_order_id、active 等] 扩展 OrderEntry

编辑:从根本上简化问题以代替新知识

所以基本上,我需要 Cake 的这个模型结构:

Order        1:m   OrderEntry
OrderEntry   1:1   ProductEntry
OrderEntry   1:1   ShipmentEntry
OrderEntry   1:1   DiscountEntry

最后 3 个关联应该是非识别性的。更准确地说,一个 OrderEntry 记录可以与三个子模型之一恰好有一种关系。

这可以通过使用 OrderEntry 作为 Order 和所有 3 个 XxxEntry 模型之间的连接表来实现,但这意味着 order_entries 表应该有 3 个外键字段:

  • product_entry_id
  • ship_entry_id
  • discount_entry_id

这是迄今为止我最好的解决方案,但并不理想,因为一个条目可能与多个订单相关联,这将是一个错误。此外,一个 joinTable 持有 3 个外键(因此有 3 个关联模型),不能为“NOT NULL”,因为每条记录只应填充一个,而其他 2 个保持为空。

总而言之,拥有一个基本模型的最佳实践是什么,该模型由几个不同的模型用自己的表进行扩展?

4

1 回答 1

0

我不确定这是否是您要查找的内容,但有一个 Cake Entity 插件可能值得一看:https ://github.com/kanshin/CakeEntity

于 2012-05-09T02:51:52.973 回答