0

我想注册一个用户并将数据插入到帐户表中,并将帐户的 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');
    } 

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

4

2 回答 2

1

试试这个代码。我假设你的表名是“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
于 2019-12-25T17:59:45.887 回答
0
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');
}
于 2019-12-25T17:00:50.980 回答