This package gives Eloquent models the ability to manage their friendships.
hootlex/laravel-friendships is a Laravel package for this package gives eloquent models the ability to manage their friendships..
It currently has 699 GitHub stars and 121.688 downloads on Packagist (latest version v1.0.24).
Install it with composer require hootlex/laravel-friendships.
Discover more Laravel packages by hootlex
or browse all Laravel packages to compare alternatives.
Last updated
This package gives Eloquent models the ability to manage their friendships. You can easily design a Facebook like Friend System.
First, install the package through Composer.
composer require hootlex/laravel-friendships
If you are using Laravel < 5.5, you need to add Hootlex\Friendships\FriendshipsServiceProvider to your config/app.php providers array:
Hootlex\Friendships\FriendshipsServiceProvider::class,
Publish config and migrations
php artisan vendor:publish --provider="Hootlex\Friendships\FriendshipsServiceProvider"
Configure the published config in
config\friendships.php
Finally, migrate the database
php artisan migrate
use Hootlex\Friendships\Traits\Friendable;
class User extends Model
{
use Friendable;
...
}
Check the Test file to see the package in action
$user->befriend($recipient);
$user->acceptFriendRequest($sender);
$user->denyFriendRequest($sender);
$user->unfriend($friend);
$user->blockFriend($friend);
$user->unblockFriend($friend);
$user->isFriendWith($friend);
$user->hasFriendRequestFrom($sender);
$user->hasSentFriendRequestTo($recipient);
$user->hasBlocked($friend);
$user->isBlockedBy($friend);
$user->getFriendship($friend);
$user->getAllFriendships();
$user->getPendingFriendships();
$user->getAcceptedFriendships();
$user->getDeniedFriendships();
$user->getBlockedFriendships();
$user->getFriendRequests();
$user->getFriendsCount();
$user->getPendingsCount();
$user->getMutualFriendsCount($otherUser);
To get a collection of friend models (ex. User) use the following methods:
$user->getFriends();
$user->getFriends($perPage = 20);
$user->getFriendsOfFriends($perPage = 20);
$user->getFriends($perPage = 20, $group_name);
$user->getMutualFriends($otherUser, $perPage = 20);
The friend groups are defined in the config/friendships.php file.
The package comes with a few default groups.
To modify them, or add your own, you need to specify a slug and a key.
// config/friendships.php
...
'groups' => [
'acquaintances' => 0,
'close_friends' => 1,
'family' => 2
]
Since you've configured friend groups, you can group/ungroup friends using the following methods.
$user->groupFriend($friend, $group_name);
$user->ungroupFriend($friend, 'family');
$user->ungroupFriend($friend);
$user->getFriendsCount($group_name);
friendships by group you can pass a group slug.$user->getAllFriendships($group_name);
$user->getAcceptedFriendships($group_name);
$user->getPendingFriendships($group_name);
...
This is the list of the events fired by default for each action
|Event name |Fired | |----------------------|---------------------------------| |friendships.sent |When a friend request is sent | |friendships.accepted |When a friend request is accepted| |friendships.denied |When a friend request is denied | |friendships.blocked |When a friend is blocked | |friendships.unblocked |When a friend is unblocked | |friendships.cancelled |When a friendship is cancelled |
See the CONTRIBUTING guide.