我有一個多對多關係的問題(下圖)。在食品店中,一些產品具有選項/變體,例如披薩有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做些事情,但是由於這涉及到一些多態的多對多關係,我不確定如何去做。如果有人能給我一個簡單的例子解決方案,我會非常感激。
基本上,我試圖達到一個階段,我可以加載訂單的所有必要信息,包括訂購的產品/變體,以及訂購的每個產品/變體的所有訂購附加件。我只是不知道該怎麼去做。
謝謝。