Laravel-ManyToMany关系在何处保存项目总数?

Laravel-ManyToMany关系在何处保存项目总数?,laravel,many-to-many,relationship,laravel-6,Laravel,Many To Many,Relationship,Laravel 6,需要建议多对多关系的最佳做法是什么?在何处保存项目合计列? 例如,我有用户和库存表,它们通过数据透视表连接,在数据透视表中,我还有附加库存的总计列。 这是正确的方法还是有人能告诉我哪一种方法是最好的 数据库结构 我可以建议: 1) 使这对外键唯一(user\u id,inventory\u id)以防止重复 2) 为透视表制作单独的模型:App\InventoryUser 3) 使用updateOrCreateLaravel Elequent函数 根据文件 updateOrCreate将更新现有

需要建议多对多关系的最佳做法是什么?在何处保存项目合计列? 例如,我有用户和库存表,它们通过数据透视表连接,在数据透视表中,我还有附加库存的总计列。 这是正确的方法还是有人能告诉我哪一种方法是最好的

数据库结构

我可以建议:

1) 使这对外键唯一(
user\u id
inventory\u id
)以防止重复

2) 为透视表制作单独的模型:
App\InventoryUser

3) 使用
updateOrCreate
Laravel Elequent函数

根据文件

updateOrCreate将更新现有模型,如果没有,则创建新模型 存在

例如

甚至更好

$inventoryUser = InventoryUser::updateOrCreate(
        ['user_id' => 'x', 'inventory_id' => 'y']
)->increment('total'); // You must Set DEFAULT value to (0) for total column in your database

目前还不清楚用户和库存是如何关联的。你能简要介绍一下这种关系吗?例如,我的任务:我有10倍的“A”库存,我想从这10个库存中给用户5倍的“A”,我必须在这里保存这5倍的数量值?我认为在pivot表中保存此清单5次是不正确的解决方案。在pivot表中存储数据是正确的解决方案吗?是的,请参阅Laravel自己提供的示例。这里有没有一种方法可以从pivot表中获取数据,如
foreach($user->inventory as$item){$item->total;}
?当然可以,但是请记住
many--many
关系==
1--many--1
。换句话说,您可以定义
用户
模型和
库存用户
透视模型之间的一对多关系。然后,您可以访问透视数据,如:
$user->relationName->total
是,但此用户可能有多个相关库存。当我建立一对多关系并调用$user->relationName->total时,它将返回许多库存。例如,我需要获得用户拥有的x库存数量(来自pivot的列总数)。
$inventoryUser = InventoryUser::updateOrCreate(
        ['user_id' => 'x', 'inventory_id' => 'y']
)->increment('total'); // You must Set DEFAULT value to (0) for total column in your database