2015-01-20 79 views
1

我在Laravel製作了一個會計系統,其中有產品和客戶。 我想爲每個客戶設定每種產品的單獨價格,即沒有爲每個折扣設定百分比。爲此我爲價格製作了一張單獨的表格。關係鏈接表laravel

我的表架構是

Products(id,name,category,stock) 
Clients(id,name,email,city) 
Prices(product_id,price_id,price(String)) 

但我無法設置Laravel關係。 我做的產品表中的價格功能

public function prices() 
{ 
    return $this->belongsToMany('Client','prices','product_id','client_id'); 
} 

,以及在客戶表作爲

public function prices() 
{ 
    return $this->belongsToMany('Product','prices','client_id','product_id'); 
} 

,但我無法用產品 - $>價格得到的價格等,我如何使用這種關係在Laravel?

+1

你能改說一下嗎?您是否想爲客戶的每種產品設定不同的價格? – davidxd33 2015-01-20 20:15:28

+0

此外,您的'價格'數據透視表的第二列不應該是'client_id'而不是'price_id'嗎? – Bogdan 2015-01-20 20:25:34

回答

0

如果您有多對多您的產品和客戶之間的關係,並且您需要使用數據透視表上的任何其他列,則需要使用關係定義來指定它。因此,例如在你Product模型,你可能有這樣的:

public function prices() 
{ 
    return $this->belongsToMany('Client', 'Prices', 'product_id', 'client_id')->withPivot('price'); 
} 

withPivot方法告訴Laravel您需要的price列是牽強,除了關係ID列。要獲得價格的產品,那麼你可以做到以下幾點:

foreach($product->prices as $price) 
{ 
    $price->pivot->price; // to get the price for each individual client 
} 

要爲Client模型做到這一點,你會需要以下(再次specifing的price列關係的一部分):

public function prices() 
{ 
    return $this->belongsToMany('Product', 'Prices','client_id','product_id')->withPivot('price'); 
} 

而獲得的價格爲客戶:

foreach($client->prices as $price) 
{ 
    $price->pivot->price; // to get the price for each individual product 
} 

您可以在Laravel Docs閱讀更多關於這一點。

+0

謝謝,我希望它能工作。 – 2015-01-20 20:42:38

+0

但是,我將如何獲得特定客戶的產品價格? – 2015-01-20 20:44:01

+0

請在將此標記爲解決方案的答案之前對其進行測試。 – Bogdan 2015-01-20 20:44:24