From b99930e1452fa26eb39f0b70cce5d518fad38cf5 Mon Sep 17 00:00:00 2001 From: shibafu Date: Mon, 10 Aug 2020 00:10:06 +0900 Subject: [PATCH] =?UTF-8?q?EjaculationController=E3=81=A7=E3=83=88?= =?UTF-8?q?=E3=83=A9=E3=83=B3=E3=82=B6=E3=82=AF=E3=82=B7=E3=83=A7=E3=83=B3?= =?UTF-8?q?=E3=82=92=E4=BD=BF=E3=81=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/EjaculationController.php | 90 ++++++++++--------- 1 file changed, 50 insertions(+), 40 deletions(-) diff --git a/app/Http/Controllers/EjaculationController.php b/app/Http/Controllers/EjaculationController.php index bd8d70c..8446c96 100644 --- a/app/Http/Controllers/EjaculationController.php +++ b/app/Http/Controllers/EjaculationController.php @@ -9,6 +9,7 @@ use App\User; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\DB; use Validator; class EjaculationController extends Controller @@ -52,29 +53,33 @@ class EjaculationController extends Controller return redirect()->route('checkin')->withErrors($validator)->withInput(); } - $ejaculation = Ejaculation::create([ - 'user_id' => Auth::id(), - 'ejaculated_date' => Carbon::createFromFormat('Y/m/d H:i', $inputs['date'] . ' ' . $inputs['time']), - 'note' => $inputs['note'] ?? '', - 'link' => $inputs['link'] ?? '', - 'source' => Ejaculation::SOURCE_WEB, - 'is_private' => $request->has('is_private') ?? false, - 'is_too_sensitive' => $request->has('is_too_sensitive') ?? false - ]); + $ejaculation = DB::transaction(function () use ($request, $inputs) { + $ejaculation = Ejaculation::create([ + 'user_id' => Auth::id(), + 'ejaculated_date' => Carbon::createFromFormat('Y/m/d H:i', $inputs['date'] . ' ' . $inputs['time']), + 'note' => $inputs['note'] ?? '', + 'link' => $inputs['link'] ?? '', + 'source' => Ejaculation::SOURCE_WEB, + 'is_private' => $request->has('is_private') ?? false, + 'is_too_sensitive' => $request->has('is_too_sensitive') ?? false + ]); - $tagIds = []; - if (!empty($inputs['tags'])) { - $tags = explode(' ', $inputs['tags']); - foreach ($tags as $tag) { - if ($tag === '') { - continue; + $tagIds = []; + if (!empty($inputs['tags'])) { + $tags = explode(' ', $inputs['tags']); + foreach ($tags as $tag) { + if ($tag === '') { + continue; + } + + $tag = Tag::firstOrCreate(['name' => $tag]); + $tagIds[] = $tag->id; } - - $tag = Tag::firstOrCreate(['name' => $tag]); - $tagIds[] = $tag->id; } - } - $ejaculation->tags()->sync($tagIds); + $ejaculation->tags()->sync($tagIds); + + return $ejaculation; + }); if (!empty($ejaculation->link)) { event(new LinkDiscovered($ejaculation->link)); @@ -144,27 +149,29 @@ class EjaculationController extends Controller return redirect()->route('checkin.edit', ['id' => $id])->withErrors($validator)->withInput(); } - $ejaculation->fill([ - 'ejaculated_date' => Carbon::createFromFormat('Y/m/d H:i', $inputs['date'] . ' ' . $inputs['time']), - 'note' => $inputs['note'] ?? '', - 'link' => $inputs['link'] ?? '', - 'is_private' => $request->has('is_private') ?? false, - 'is_too_sensitive' => $request->has('is_too_sensitive') ?? false - ])->save(); + DB::transaction(function () use ($ejaculation, $request, $inputs) { + $ejaculation->fill([ + 'ejaculated_date' => Carbon::createFromFormat('Y/m/d H:i', $inputs['date'] . ' ' . $inputs['time']), + 'note' => $inputs['note'] ?? '', + 'link' => $inputs['link'] ?? '', + 'is_private' => $request->has('is_private') ?? false, + 'is_too_sensitive' => $request->has('is_too_sensitive') ?? false + ])->save(); - $tagIds = []; - if (!empty($inputs['tags'])) { - $tags = explode(' ', $inputs['tags']); - foreach ($tags as $tag) { - if ($tag === '') { - continue; + $tagIds = []; + if (!empty($inputs['tags'])) { + $tags = explode(' ', $inputs['tags']); + foreach ($tags as $tag) { + if ($tag === '') { + continue; + } + + $tag = Tag::firstOrCreate(['name' => $tag]); + $tagIds[] = $tag->id; } - - $tag = Tag::firstOrCreate(['name' => $tag]); - $tagIds[] = $tag->id; } - } - $ejaculation->tags()->sync($tagIds); + $ejaculation->tags()->sync($tagIds); + }); if (!empty($ejaculation->link)) { event(new LinkDiscovered($ejaculation->link)); @@ -180,8 +187,11 @@ class EjaculationController extends Controller $this->authorize('edit', $ejaculation); $user = User::findOrFail($ejaculation->user_id); - $ejaculation->tags()->detach(); - $ejaculation->delete(); + + DB::transaction(function () use ($ejaculation) { + $ejaculation->tags()->detach(); + $ejaculation->delete(); + }); return redirect()->route('user.profile', ['name' => $user->name])->with('status', '削除しました。'); }