Laravel ManyToMany关系在哪里保存项目总数?

Laravel ManyToMany relations where to save item total?

需要建议多对多关系的最佳做法是什么,在哪里保存项目总计列? 对于前。我有用户和库存 Table,它们通过枢轴 table 连接,在枢轴 table 中我也有附加库存的总计列。 这是正确的方法还是有人可以建议我这是最好的方法?

数据库结构

我可以建议:

1) 使一对外键唯一(user_id, inventory_id)以防止重复

2) 为你做一个单独的模型 pivot table : App\InventoryUser

3) 利用updateOrCreate Laravel Elequent函数

根据 Elequent 文档

updateOrCreate will update an existing model or create a new model if none exists

例如

$oldTotal = InventoryUser::where(['user_id' => 'x', 'inventory_id' => 'y'])->select('total') ?? 0;
$inventoryUser = InventoryUser::updateOrCreate(
    ['user_id' => 'x', 'inventory_id' => 'y'],
    ['total' => $oldTotal+1]
);

甚至更好

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