如何在 laravel 5.4 中使用 SQL 交易?

how to use SQL Transaction in laravel 5.4?

如何在此代码示例中使用 Sql 事务。我试过了,但交易不正常。我的数据库引擎是 InnoDB。

 DB::transaction(function() use($request  ) {
 $user = User::$request->only('name','mobile','address');
 $userSave = User::create($user)->id;

 foreach ( $request->subjects as $items)
 {

  $data = User::$request->only('name');
   $data['student_id'] = $userSave
    $subject= Subject::create($data);

   }
  } //sql transaction end

我无法解释这种更好的方式..所以请阅读代码并更正它。如果我错了。问题是,如果主题模型查询失败,则不会回滚。

你忘了 DB::commit();

没有这个你的代码将无法工作。

你应该在 foreach() 语句后写 DB:commit

 DB::transaction(function() use($request  ) {
 $user = User::$request->only('name','mobile','address');
 $userSave = User::create($user)->id;

  foreach ( $request->subjects as $items)
  {

      $data = User::$request->only('name');
      $data['student_id'] = $userSave
      $subject= Subject::create($data);
   }
    DB::commit();
 } //sql transaction end