Link table 关系 laravel
Link table in relationship laravel
我正在 Laravel 中制作一个会计系统,其中我有产品和客户。
我想为每个客户设置每个产品的单独价格,即不为每个折扣设置百分比。为此,我为价格做了一个单独的table。
我的 table 架构是
Products(id,name,category,stock)
Clients(id,name,email,city)
Prices(product_id,price_id,price(String))
但我无法设置 Laravel 关系。
我在产品 table 中将价格函数设置为
public function prices()
{
return $this->belongsToMany('Client','prices','product_id','client_id');
}
并在客户端 table 中作为
public function prices()
{
return $this->belongsToMany('Product','prices','client_id','product_id');
}
但我无法使用 $product->prices 获取价格等。如何在 Laravel 中使用这种关系?
如果您的产品和客户之间存在 多对多 关系,并且您需要处理数据透视表 table 上的任何其他列,您需要用关系定义来指定。因此,例如,在您的 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 中阅读更多相关信息。
我正在 Laravel 中制作一个会计系统,其中我有产品和客户。 我想为每个客户设置每个产品的单独价格,即不为每个折扣设置百分比。为此,我为价格做了一个单独的table。
我的 table 架构是
Products(id,name,category,stock)
Clients(id,name,email,city)
Prices(product_id,price_id,price(String))
但我无法设置 Laravel 关系。 我在产品 table 中将价格函数设置为
public function prices()
{
return $this->belongsToMany('Client','prices','product_id','client_id');
}
并在客户端 table 中作为
public function prices()
{
return $this->belongsToMany('Product','prices','client_id','product_id');
}
但我无法使用 $product->prices 获取价格等。如何在 Laravel 中使用这种关系?
如果您的产品和客户之间存在 多对多 关系,并且您需要处理数据透视表 table 上的任何其他列,您需要用关系定义来指定。因此,例如,在您的 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 中阅读更多相关信息。