如何使用 DB::Tranactions 将数据插入单个控制器中的两个表

我想注册一个用户并将数据插入到帐户表中,并将帐户的 user_id 作为创建的用户 ID 插入,我从我的管理控制器中执行此操作;


public function store(StoreUsersRequest $request)

    {


        DB::transaction(function($request)

        {

            $newUser = User::create($request->all());


            $newAccounts = Accounts::create([

                'user_id' => $newUser->id,

                'balance' => '0',

                'amt' => '0',

            ]);


            if( !$newAccounts )

            {

                throw new \Exception('accounts not created for new user');

            }

        });

        return redirect()->route('users.create');

    } 

任何人都可以告诉我怎么做吗?


鸿蒙传说
浏览 83回答 2
2回答

猛跑小猪

试试这个代码。我假设你的表名是“accounts”$result = DB::transaction(function () use ($request) {&nbsp; $data = new User;&nbsp; $data->name = $request->name;&nbsp; $data->other_values = $request->values;&nbsp; $data->save();&nbsp; DB::table('accounts')->insert(['user_id' => $data->id, 'balance' =>&nbsp; '0', 'amount' => '0']);&nbsp; return true;}, 5);if($result) {&nbsp; // Redirect after successful execution&nbsp; return redirect()->route('users.create');} else {&nbsp; // Redirect after unsuccessful execution&nbsp; Session::flash('failed','Oops, accounts not created for new user');&nbsp; return redirect()->route('previous.route');}在查看文件中@if (session('failed'))&nbsp; <div class="alert alert-danger">&nbsp; &nbsp; {{ session('failed') }}&nbsp; </div>@endif

烙印99

try {&nbsp; &nbsp; DB::beginTransaction();&nbsp; &nbsp; $newUser = User::create($request->all());&nbsp; &nbsp; $newAccounts = Accounts::create([&nbsp; &nbsp; &nbsp; &nbsp; 'user_id' => $newUser->id,&nbsp; &nbsp; &nbsp; &nbsp; 'balance' => '0',&nbsp; &nbsp; &nbsp; &nbsp; 'amt' => '0',&nbsp; &nbsp; ]);&nbsp; &nbsp; DB::commit();} catch (\Exception $e) {&nbsp; &nbsp; DB::rollback();&nbsp; &nbsp; throw new \Exception('accounts not created for new user');}
打开App,查看更多内容
随时随地看视频慕课网APP