diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index e279091..28fccd6 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -115,7 +115,6 @@ class DashboardController extends Controller ->where('user_id', Auth::user()->getAuthIdentifier()) ->firstOrFail(); /** @var Post $today_post */ - $today_post->deleteTags(); $today_post->delete(); return Redirect::to('home')->withSuccess('Great! Your today\'s post is now deleted. You can make a new one!'); } catch (\ErrorException $e) { diff --git a/database/migrations/2020_03_17_084445_add_cascade_on_tags.php b/database/migrations/2020_03_17_084445_add_cascade_on_tags.php new file mode 100644 index 0000000..828c60e --- /dev/null +++ b/database/migrations/2020_03_17_084445_add_cascade_on_tags.php @@ -0,0 +1,71 @@ +dropForeign('post_id'); + $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade')->onUpdate('cascade'); + $table->dropForeign('tag_id'); + $table->foreign('tag_id')->references('id')->on('tags')->onDelete('cascade')->onUpdate('cascade'); + }); + } else { + // SQLite doesn't support drop foreign key + Schema::rename('posts_tags', 'post_tags_bu'); + Schema::create('posts_tags', function (Blueprint $table) { + $table->bigIncrements('id'); + $table->timestamps(); + $table->bigInteger('post_id'); + $table->bigInteger('tag_id'); + $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade')->onUpdate('cascade'); + $table->foreign('tag_id')->references('id')->on('tags')->onDelete('cascade')->onUpdate('cascade'); + }); + DB::insert('insert into posts_tags (id, post_id, tag_id, created_at, updated_at) + select id, post_id, tag_id, created_at, updated_at from post_tags_bu'); + Schema::drop('post_tags_bu'); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + if (DB::getDriverName() !== 'sqlite') { + Schema::table('posts_tags', function (Blueprint $table) { + $table->dropForeign('post_id'); + $table->foreign('post_id')->references('id')->on('posts'); + $table->dropForeign('tag_id'); + $table->foreign('tag_id')->references('id')->on('tags'); + }); + } else { + // SQLite doesn't support drop foreign key + Schema::rename('posts_tags', 'post_tags_bu'); + Schema::create('posts_tags', function (Blueprint $table) { + $table->bigIncrements('id'); + $table->timestamps(); + $table->bigInteger('post_id'); + $table->bigInteger('tag_id'); + $table->foreign('post_id')->references('id')->on('posts'); + $table->foreign('tag_id')->references('id')->on('tags'); + }); + DB::insert('insert into posts_tags (id, post_id, tag_id, created_at, updated_at) + select id, post_id, tag_id, created_at, updated_at from post_tags_bu'); + Schema::drop('post_tags_bu'); + } + } +}