Reputation: 1914
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
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