increment('reactions_count'); } public function decrementReactions(Post $post): void { DB::table('posts') ->where('id', $post->id) ->where('reactions_count', '>', 0) ->decrement('reactions_count'); } public function incrementComments(Post $post): void { $post->increment('comments_count'); } public function decrementComments(Post $post): void { DB::table('posts') ->where('id', $post->id) ->where('comments_count', '>', 0) ->decrement('comments_count'); } /** * Recompute both counters from scratch (repair tool). */ public function recompute(Post $post): void { Post::withoutTimestamps(function () use ($post) { $post->update([ 'reactions_count' => PostReaction::where('post_id', $post->id)->count(), 'comments_count' => PostComment::where('post_id', $post->id)->whereNull('deleted_at')->count(), 'saves_count' => \App\Models\PostSave::where('post_id', $post->id)->count(), ]); }); } public function incrementSaves(Post $post): void { $post->increment('saves_count'); } public function decrementSaves(Post $post): void { DB::table('posts') ->where('id', $post->id) ->where('saves_count', '>', 0) ->decrement('saves_count'); } }