From 1a6677b8aa7153db1c306936dc106c5783c5466d Mon Sep 17 00:00:00 2001 From: Clement Desmidt Date: Tue, 17 Mar 2020 09:51:20 +0100 Subject: [PATCH] =?UTF-8?q?:card=5Ffile=5Fbox:=20G=C3=A8re=20les=20tags=20?= =?UTF-8?q?en=20BDD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix #8 --- app/Http/Controllers/DashboardController.php | 1 - .../2020_03_17_084445_add_cascade_on_tags.php | 71 +++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2020_03_17_084445_add_cascade_on_tags.php 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'); + } + } +}