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
需要建议多对多关系的最佳做法是什么,在哪里保存项目总计列? 对于前。我有用户和库存 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