簡體   English   中英

Laravel模型關系

[英]Laravel Model Relationships

我在玩Laravel模型,遇到了一個相當普通的數據庫設計模式,無法建立關系(使用Laravel)。

這是Database design

如果僅考慮下表(為簡單起見):
1.客戶
2.產品
3.Product_Prices(產品價格預計會隨時間變化,我們需要保持跟蹤)
4.Customer_Orders
5.Customer_Orders_Products(客戶可以在一個訂單中訂購多個產品)

這是我到目前為止所擁有的:
1.產品HAS MANY Product_Prices
2. Product_Price BELONGS TO產品
3.客戶HAS MANY Customer_Orders
4. Customer_Order BELONGS TO客戶
5. CUSTOMER_ORDER HAS MANY Customer_Order_Products
6. Customer_Order_Products BELONGS TO Customer_Order的影響

我認為將通過與Products表建立關系來獲取每個Customer_Order_ProductsPrice 我們如何建立這種關系?

如何獲取具有以下詳細信息的Laravel Collection Object (我不確定是否只有Eloquent返回一個集合對象,或者與Fluent相同):
1. Customer WITH Customer_Orders WITH Customer_Orders_Products WITH Product_Price

還有如何施加約束,例如:
1. Customer WITH Customer_Orders WITH Customer_Orders_Products WITH Product_Price WHERE Product_Price < Customers_Order.date_order_placed

謝謝

我認為取消規范化數據庫以將價格包含在Customer_Order_Products中,然后使用以下關系將是更好的主意。

class CustomerOrder {
    protected $table = 'Customer_Orders';

    ...

    public function products()
    {
        return $this->belongsToMany('Products')->withPivot('quantity','comments', 'price');
    }

    ...
}

在您的情況下,Customer_Orders_Products不僅是精美的聯接表,而且還具有與Product_Prices表之間的關系。

將product_price_id添加到表中,以將訂購的產品映射到價格。

這增加了靈活性(也許價格是由以后的價格而不是“近期性”決定的),其間接費用幾乎與直接存儲價格相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM