【发布时间】:2020-10-11 06:17:16
【问题描述】:
这是一个有趣的问题,但我希望就如何最好地构建几个 Eloquent 模型及其关系得到一些建议。
总结
我正在尝试创建一个最优雅地表示一组产品、组件和零件的结构,并允许我计算产品和组件的成本。
-
App\Part是从第三方购买的,所以会以单位成本插入到数据库中。 -
App\Component由零件组成(即:组件belongsToMany()零件,反之亦然)。组件的成本是 App\Part 价格的总和,但该部分也可以直接出售给客户。 -
App\Product由两个部件和组件组成,成本为App\Part和App\Component成本的总和;因此,部件和组件belongsToMany()产品。
产品和组件共享许多相同的数据字段,例如程序方法(构建产品/组件的说明)、销售价格等。
将零件想象成一个螺栓或一块木材,可用于制作桌腿(组件),然后可用于创建任意数量的不同类型的桌子(产品)。该零件可以直接由产品或由用于制造产品的组件使用。
我的考虑
到目前为止,我已经提出了两种不同的方法,但看起来都不是很干净,所以我希望有人可以引导我走向更好的方向:
-
利用
App\Part上的多态关系,使其与App\Component和App\Product相关,然后在App\Product和App\Component之间建立多对多关系。组件必须记录其计算的单位成本,然后在计算产品成本时,我可以将零件和组件的成本相加,并添加它们。 -
创建
App\Component时,将其引用添加回parts表中作为零件,即:桌腿由两块不同的木材和一些螺丝制成(我不知道,我'我不是木匠)。然后,一旦在parts表中创建了table leg 的条目,App\Product只需要与 Parts 建立多对多关系。
问
这些方法中的任何一种都不适合我,因此我非常感谢任何有任何建议的人或任何过去可能解决过类似问题的人的建议。
【问题讨论】:
标签: laravel eloquent data-modeling