gpt4 book ai didi

php - 关系 laravel 中的链接表

转载 作者:行者123 更新时间:2023-11-30 22:51:27 25 4
gpt4 key购买 nike

我正在 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->prices 来获取价格等。我如何在 Laravel 中使用这种关系?

最佳答案

如果您的产品和客户之间存在多对多关系,并且您需要处理数据透视表中的任何其他列,则需要在关系定义中指定。因此,例如在您的 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 中阅读更多相关信息.

关于php - 关系 laravel 中的链接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28054330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com