📅  最后修改于: 2023-12-03 15:17:12.416000             🧑  作者: Mango
事务(Transaction)是数据库操作中重要的概念。一组操作要么全部成功要么全部失败,保证数据一致性。在 Laravel 中,我们可以使用 DB facade 提供的方法实现事务操作。
我们可以使用 DB::beginTransaction()
方法来开始一个事务,在此之后执行的数据库查询操作都将在一个事务内进行。
DB::beginTransaction();
如果事务内所有操作都成功完成,则可以使用 DB::commit()
方法来提交事务,将数据持久化到数据库中。
DB::commit();
如果事务内出现了错误或者其中一个操作失败,则可以使用 DB::rollBack()
方法来回滚事务,撤销所有已执行的操作。
DB::rollBack();
在事务中执行数据库操作的步骤如下:
DB::beginTransaction();
try {
// 执行数据库操作
// ...
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
throw $e;
}
use Illuminate\Support\Facades\DB;
DB::beginTransaction();
try {
// 减少用户余额
DB::table('users')->where('id', $userId)->decrement('balance', $amount);
// 增加商家余额
DB::table('merchants')->where('id', $merchantId)->increment('balance', $amount);
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
throw $e;
}
以上代码将从用户余额中减去 $amount
的金额,并将这笔金额加到商家的余额中。如果其中一个操作失败,则会回滚整个事务。