| Package Data | |
|---|---|
| Maintainer Username: | AsyrafHussin | 
| Maintainer Contact: | hootlex@icloud.com (Hootlex) | 
| Package Create Date: | 2017-02-06 | 
| Package Last Update: | 2017-02-11 | 
| Home Page: | |
| Language: | PHP | 
| License: | MIT | 
| Last Refreshed: | 2025-10-25 15:03:34 | 
| Package Statistics | |
|---|---|
| Total Downloads: | 24 | 
| Monthly Downloads: | 0 | 
| Daily Downloads: | 0 | 
| Total Stars: | 0 | 
| Total Watchers: | 0 | 
| Total Forks: | 0 | 
| Total Open Issues: | 0 | 
This package gives Eloquent models the ability to manage their friendships. You can easily design a Facebook like Friend System.
##Models can:
First, install the package through Composer.
composer require asyrafhussin/laravel-friendships
Then include the service provider inside config/app.php.
'providers' => [
    ...
    AsyrafHussin\Friendships\FriendshipsServiceProvider::class,
    ...
];
Publish config and migrations
php artisan vendor:publish --provider="AsyrafHussin\Friendships\FriendshipsServiceProvider"
Configure the published config in
config\friendships.php
Finally, migrate the database
php artisan migrate
use AsyrafHussin\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->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.