我正在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');
}
但是我无法使用$ product->价格来获得价格等。我怎样才能在Laravel中使用这种关系?
答案 0 :(得分:0)
如果您的产品与客户之间存在多对多关系,并且您需要使用数据透视表上的任何其他列,则需要使用关系定义指定该关系。例如,在您的Product
模型中,您可能会这样:
public function prices()
{
return $this->belongsToMany('Client', 'Prices', 'product_id', 'client_id')->withPivot('price');
}
withPivot
方法告诉Laravel除了关系ID列之外,还需要提取price
列。要获得产品的价格,您可以执行以下操作:
foreach($product->prices as $price)
{
$price->pivot->price; // to get the price for each individual client
}
要对Client
模型执行此操作,您需要以下内容(再次指定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。
中详细了解相关信息