为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
鸿蒙传说 2022-07-02 16:48:37
我想注册一个用户并将数据插入到帐户表中,并将帐户的 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');    } 任何人都可以告诉我怎么做吗?
查看完整描述

2 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

试试这个代码。我假设你的表名是“accounts”


$result = DB::transaction(function () use ($request) {

  $data = new User;

  $data->name = $request->name;

  $data->other_values = $request->values;

  $data->save();

  DB::table('accounts')->insert(['user_id' => $data->id, 'balance' =>  '0', 'amount' => '0']);

  return true;

}, 5);


if($result) {

  // Redirect after successful execution

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

} else {

  // Redirect after unsuccessful execution

  Session::flash('failed','Oops, accounts not created for new user');

  return redirect()->route('previous.route');

}

在查看文件中


@if (session('failed'))

  <div class="alert alert-danger">

    {{ session('failed') }}

  </div>

@endif


查看完整回答
反对 回复 2022-07-02
?
烙印99

TA贡献1829条经验 获得超13个赞

try {

    DB::beginTransaction();


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


    $newAccounts = Accounts::create([

        'user_id' => $newUser->id,

        'balance' => '0',

        'amt' => '0',

    ]);


    DB::commit();

} catch (\Exception $e) {

    DB::rollback();


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

}


查看完整回答
反对 回复 2022-07-02
  • 2 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号