如何";扩展;在CakePHP中使用数据的模型是否正确?

如何";扩展;在CakePHP中使用数据的模型是否正确?,cakephp,database-design,model,single-table-inheritance,Cakephp,Database Design,Model,Single Table Inheritance,我正在将我的一个旧的手工制作的应用程序改写成CakePHP 2.0,我遇到了这个旧的、不断重复的模型设计难题 这是目标设计: Order有许多OrderEntries OrderEntry有字段[金额,类型] ProductEntry使用字段[产品id、数量、重量]扩展OrderEntry ShipmentEntry使用字段[总重量、国家/地区id、城市、地址等]扩展OrderEntry DiscountEntry使用字段[折扣\代码、父\订单\ id、活动等]扩展OrderEntry 编

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

这是目标设计:

  • Order有许多OrderEntries
  • OrderEntry有字段[金额,类型]
  • ProductEntry使用字段[产品id、数量、重量]扩展OrderEntry
  • ShipmentEntry使用字段[总重量、国家/地区id、城市、地址等]扩展OrderEntry
  • DiscountEntry使用字段[折扣\代码、父\订单\ id、活动等]扩展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\u entries表应该有3个外键字段:

  • 产品\u条目\u id
  • 装运\输入\标识
  • 折扣\u条目\u id
这是迄今为止我所拥有的最佳解决方案,但并不理想,因为有可能一个条目与多个订单关联,这将是一个错误。另外,一个joinTable包含3个外键(以及3个关联模型),它们不能为“NOTNULL”,因为每个记录只应填充一个,而其他2个保持NULL


总之,拥有一个基本模型的最佳实践是什么,它由几个不同的模型和它们自己的表扩展而成?

我不确定这是否是您要寻找的,但有一个Cake实体插件可能值得一看:

这似乎是一个很棒的插件。我认为不将数据视为对象是Cake的一大缺点,从OOP的角度来看,这将更加直观。但我不确定这是否解决了我的问题。无论如何,谢谢你,我相信这个插件会在我未来的开发中得到应用