2016-08-18 13 views
1

のカスタムメソッド/関係私は多対多の多型の関係(下図)の問題を持っています。食料品店では、いくつかの製品にオプション/バリアントがあります。ピザは7inch、12inch、16inchのバリエーションがあります。ピザがカートに追加されると、バリアントを選択する必要があります。注文が 保存されLaravel多対多の多形性の関係 - ピボット

- (亜種なし)買った製品はorderablesテーブル に保存されます - variant_orderablesテーブルところで

diagram of polymorphic many-to-many relationship

に保存されている購入されている変異型を、ピボットテーブルが呼び出されますorderablesvariant_orderablesのように、Laravelの規則に従って予想されるものではなく、 「customer_order_product」、customer_ordersに加えて、productsvariantsは(店業者からそれらの項目を購入)stock_ordersと多型の関係にもあるからです。私はダイアグラム上のすべてを単純に保つようには示していませんでした。

いずれにしても、productsまたはvariantsとなっている商品を購入した場合は、「追加品」を順番に追加することができます。例えば。ピザは余分なチーズ、またはペパーノをエクストラとして持つことができます(extras_groups_offersテーブルに含まれている情報)。私たちはエキストラがオンに適用されているorderablesまたはvariant_orderables IDとともに、順序付けられたエキストラのproductまたはvariant IDの一覧を表示する場所

ordered_extrasです。

だからvariantscustomer_orders間、variant_orderablesピボットであるが、その後variant orderablesピボットとしてordered_extrasextras_groups_offersとの関係を有しています。

私はおそらくnewPivotで何かをする必要がある知っているが、これは、いくつかの多型多対多の関係を必要とするよう、私はそれについて移動する方法が正確にわかりません。誰かが私にシンプルなソリューションを教えてもらえれば、とても感謝しています。

基本的には、注文された製品/バリアント、注文された各製品/バリアントのすべての注文エクストラを含む、注文に必要なすべての情報を積極的にロードできる段階に到達しようとしています。私はちょうどそれについて行く方法を知らない。

ありがとうございました。

答えて

0

通常のモデルとしてorderablesvariant_orderablesテーブルを作成することで、この問題を解決しました。これは、私が関係性に関してもっと連鎖していることを意味しますが、少なくとも複数のネストされたレイヤーを簡単に読み込めます。 order.orderProducts.extrasGroupsOffers (それがどこから来たあなたは迷っている場合P.S.のorderablesは、order_productに改名されました)