// the find
overtrue/laravel-follow
:heart: This package helps you to add user based follow system to your model.
A Laravel package that adds follower/following relationships to any Eloquent model via traits. Covers the full social-follow pattern including private accounts with approval flow, and it's part of a family of similar packages (like, favorite, vote) from the same author. Aimed at Laravel developers building social features who don't want to wire up a pivot table themselves.
The dual-trait design (Follower on the actor, Followable on the target) is clean and lets you attach following to non-user models like channels or topics without any awkwardness. The private-account approval flow is a real feature that most competing packages skip entirely — `needsToApproveFollowRequests()` is a simple override that handles the Instagram-style pattern. `attachFollowStatus()` is the right abstraction for the list-rendering case where you need to show a follow button state per item without N+1 queries. Events on follow/unfollow are there if you need to trigger notifications downstream.
The `orderByFollowersCount` scopes do a subquery join that will hurt at scale — there's no guidance on caching counts or using a denormalized counter column, which you'll need once follower counts get large. The package doesn't handle mutual-follow detection (are we friends?) as a first-class concept, so you'd have to build that yourself with two `isFollowing` calls. The single `followables` pivot table design means all followable types share one table; at high volume across many polymorphic types, that table becomes a hot spot with no obvious mitigation documented. Test coverage exists but is fairly thin on edge cases around the approval flow.