我没有看到Laravel如何处理保存模型上的冲突。
假设我的Product
模型具有quantity
属性。如果例如买方购买产品,我应该如何防止冲突:
$product = Product::find(1);
$product->quantity = $product->quantity - 1;
$product->save();
而卖家想要更新数量:
$product = Product::find(1);
$product->quantity = $product->quantity + 100;
$product->save();
那么如果他们在同一时间运行该代码会发生什么? Laravel如何正确保存数据?我需要手动处理冲突吗?
我没有在文档中看到任何关于此类内容的引用,因此任何信息都会有所帮助。
答案 0 :(得分:0)
任何代码都不会在同一时间运行。但我确实明白为什么你可能会担心。两个用户同时改变了一些东西,等等等等。他们都处于编辑模式,一个保存会覆盖另一个,等等。
但是 ,您可以在Laravel中使用lockForUpdate()
。例如,像这样:
$product = Product::lockForUpdate()->find(1);
$product->quantity = $product->quantity + 100;
$product->save();
此处有更多信息:https://laravel.com/docs/5.2/queries#pessimistic-locking