Laravel 5 Followers
Gives Eloquent models the ability to manage their followers.
Models can:
- Send Follow Requests
- Accept Follow Requests
- Deny Follow Requests
- Block Another Model
Installation
First, install the package through Composer.
composer require skybluesofa/laravel-followers
Then include the service provider inside config/app.php
.
'providers' => [
...
Skybluesofa\Followers\ServiceProvider::class,
...
];
Publish config and migrations
php artisan vendor:publish --provider="Skybluesofa\Followers\ServiceProvider"
Configure the published config in
config\followers.php
Finally, migrate the database
php artisan migrate
Setup a Model
use Skybluesofa\Followers\Traits\Followable;
class User extends Model
{
use Followable;
...
}
How to use
Check the Test file to see the package in action
Methods
Send a Follow Request
Will trigger a Skybluesofa\LaravelFollowers\Events\FollowRequest
event.
$user->follow($recipient);
Accept a Follow Request
Will trigger a Skybluesofa\LaravelFollowers\Events\FollowRequestAccepted
event.
$recipient->acceptFollowRequestFrom($user);
Deny a Follow Request
Will trigger a Skybluesofa\LaravelFollowers\Events\FollowRequestDenied
event.
$recipient->denyFollowRequestFrom($user);
Remove Follow
Will trigger a Skybluesofa\LaravelFollowers\Events\Unfollow
event.
$user->unfollow($recipient);
Block a User
Will trigger a Skybluesofa\LaravelFollowers\Events\FollowingBlocked
event.
$user->blockBeingFollowedBy($recipient);
Unblock a User
Will trigger a Skybluesofa\LaravelFollowers\Events\FollowingUnblocked
event.
$user->unblockBeingFollowedBy($recipient);
Check if User is Following another User
$user->isFollowing($recipient);
Check if User is being Followed by another User
$recipient->isFollowedBy($user);
Check if User has a pending Follow request from another User
$recipient->hasFollowRequestFrom($user);
Check if User sent a pending Follow request to another User
$user->hasSentFollowRequestTo($recipient);
Check if User has blocked another User
$recipient->hasBlockedBeingFollowedBy($user);
Check if User is blocked by another User
$user->isBlockedFromFollowing($recipient);
Get a single friendship
$user->getFriendship($recipient);
Get a list of all Friendships
$user->getAllFriendships();
Get a list of pending Friendships
$user->getPendingFriendships();
Get a list of accepted Friendships
$user->getAcceptedFriendships();
Get a list of denied Friendships
$user->getDeniedFriendships();
Get a list of blocked Friendships
$user->getBlockedFriendships();
Get a list of pending Friend Requests
$user->getFriendRequests();
Get the number of Friends
$user->getFriendsCount();
Friends
To get a collection of friend models (ex. User) use the following methods:
Get Friends
$user->getFriends();
Get Friends Paginated
$user->getFriends($perPage = 20);
Events
These events are triggered during the lifecycle of following/unfollowing/accept/deny followers:
Skybluesofa\LaravelFollowers\Events\FollowingBlocked(Model $recipient, Model $sender);
Skybluesofa\LaravelFollowers\Events\FollowingUnblocked(Model $recipient, Model $sender);
Skybluesofa\LaravelFollowers\Events\FollowRequest(Model $recipient, Model $sender);
Skybluesofa\LaravelFollowers\Events\FollowRequestAccepted(Model $recipient, Model $sender);
Skybluesofa\LaravelFollowers\Events\FollowRequestDenied(Model $recipient, Model $sender);
Skybluesofa\LaravelFollowers\Events\Unfollow(Model $recipient, Model $sender);
To listen for and react to these events, follow the instructions available in the Laravel Documentation.
Thank you
The basis of this code was garnered from https://github.com/hootlex/laravel-friendships. Although it was a jumping off point, much of the code has been rewritten to allow for Following as opposed to Mutual Friendship.
Contributing
See the CONTRIBUTING guide.