DBファザードにtransactionという、メソッドが用意されています。
メソッドの内容としては、
transaction メソッドの処理内で例外が発生すると(エラーが発生する)と
ロールバック処理されます。
つまり、メソッド内で問題が発生した際に、途中までの処理も全てなかったことにしてくれます。問題おきた際に途中までの処理は完了していると不都合な事態が発生してしまいますので、便利です。
transaction メソッドは返り値を受け取ることも可能です。
メソッド内での処理を、外部で利用することが可能です。
例えば、下記のようにreturn で返した値を$articleの変数で引き受けることが可能です。
$article = DB::transaction(function () use ($request) { $article = RecomendArticle::updateOrCreate( ['id' => $request->articleId], [ 'title' => $request->title, 'nickname' => $request->nickname, 'work' => $request->work, 'age' => $request->age, 'sex' => $request->sex, ); return $article; });