Laravel多对多多态关系 - 定制方法/关键点
我有一个多对多关系的问题(下图)。在食品店中,一些产品具有选项/变体,例如披萨有7英寸,12英寸,16英寸的变种。当比萨被添加到购物车时,必须选择变体。Laravel多对多多态关系 - 定制方法/关键点
当一个订单保存 - 买产品(不包括变种)被保存在orderables
表 - 这是买都保存在variant_orderables
表
顺便说一句变种,枢轴表称为orderables
和variant_orderables
,而不是根据Laravel公约所预期的,例如“customer_order_product”,因为除了customer_orders
之外,products
和variants
也与stock_orders
(其中商店从供应商那里购买这些物品)处于多态关系。我只是没有在图上显示所有内容,以保持简单。
无论如何,购买的物品,不管它们是products
还是variants
,都可以在订单中添加“额外”。例如。比萨饼可以有额外的奶酪或意大利辣香肠作为临时演员(信息包含在extras_groups_offers
表中)。
ordered_extras
是我们将列出已下令,与群众演员被应用在orderables
或variant_orderables
ID沿着额外的product
或variant
ID。
所以variants
和customer_orders
之间,variant_orderables
是枢转,但随后variant orderables
具有extras_groups_offers
与ordered_extras
作为枢轴的关系。
我知道我可能需要用newPivot做些事情,但是由于这涉及到一些多态的多对多关系,我不确定如何去做。如果有人能给我一个简单的例子解决方案,我会非常感激。
基本上,我试图达到一个阶段,我可以加载订单的所有必要信息,包括订购的产品/变体,以及订购的每个产品/变体的所有订购附加件。我只是不知道该怎么去做。
谢谢。
我通过将orderables
和variant_orderables
表作为正常模型来解决问题。这意味着我在关系方面有更多的链接,但我至少可以轻松加载多个嵌套图层,例如order.orderProducts.extrasGroupsOffers (P.S.可订购产品已重新命名为order_product,如果您想知道从哪里来的)