📜  laravel db 事务 - SQL (1)

📅  最后修改于: 2023-12-03 15:02:34.808000             🧑  作者: Mango

Laravel 数据库事务 - SQL

在 Laravel 中,事务是一种管理关系型数据库 ACID 性质的技术。ACID 是指原子性、一致性、隔离性和持久性。这意味着,当你使用事务时,你可以在一组数据库操作中保持全局一致性,以确保只要一个操作失败,它们全部都将被回滚(撤销)到之前的状态。

开始一个事务

你可以通过 DB facade 来开启一个事务:

DB::beginTransaction();
回滚一个事务

如果事务失败,你可以回滚它:

DB::rollBack();
提交一个事务

如果事务没有错误,你可以提交它:

DB::commit();
Laravel 事务示例

下面是一个用 Laravel 进行事务操作的示例:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class UserController extends Controller
{
    /**
     * 创建用户。
     */
    public function createUser(Request $request)
    {
        // 执行事务
        DB::transaction(function () use ($request) {
            $user = new User;
            $user->name = $request->name;
            $user->email = $request->email;
            $user->password = bcrypt($request->password);
            $user->save();

            $address = new Address;
            $address->user_id = $user->id;
            $address->address = $request->address;
            $address->save();
        });
    }
}
总结

Laravel 的数据库事务在管理数据库时非常有用。它们允许你执行一组操作,并在出现问题时回滚到原始状态。在编写可靠的应用程序时,使用事务是一个重要的工具,可以最大限度地减少数据损坏并确保数据的一致性和有效性。