①transactionメソッドを使用する。
・ポイント
例外がスローされると、自動的にロールバックされる
DB::transaction(function() {
// クエリ発行
}
(例)
public function userUpdate ($request, $userId, $storeId) {
$postData = $request->post();
$result = DB::transaction(function() use ($postData, $userId, $storeId) {
DB::table('users')->where('id', $userId)->update($postData['users']);
DB::table('stores')->where('id', $storeId)->update($postData['stores']);
return true;
});
return $result;
}
②beginTransactionメソッドを使用する。
DB::beginTransaction();
try {
// クエリ発行
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
}
(例)
public function userUpdate($request, $userId, $storeId)
{
$postData = $request->post();
DB::beginTransaction();
try {
DB::table('users')->where('id', $userId)->update($postData['users']);
DB::table('stores')->where('id', $storeId)->update($postData['stores']);
DB::commit();
} catch (\Exception $e) {
DB::rollBack();
}
return true;
}