pankaj
pankaj

Reputation: 1914

how to use SQL Transaction in laravel 5.4?

how to use Sql Transaction in this code sample. i tried but transaction is not working properly. my database engine is 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

I can not explain this better way .. so please read code and correct it. if i am wrong. problem is, it is not rollback if subject model query gone failed.

Upvotes: 0

Views: 416

Answers (1)

Dinesh
Dinesh

Reputation: 169

you forgot to DB::commit();

Without this your code will not work.

You should write DB:commit after foreach() statement

 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

Upvotes: 1

Related Questions