This package gives Eloquent models the ability to manage friendships concept forked from hootlex/laravel-friendships.
blok/laravel-friendable is a Laravel package for this package gives eloquent models the ability to manage friendships concept forked from hootlex/laravel-friendships..
It currently has 0 GitHub stars and 7 downloads on Packagist.
Install it with composer require blok/laravel-friendable.
Discover more Laravel packages by blok
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 with this package.
This is a fork from : https://github.com/hootlex/laravel-friendships adapted for the Blok Ecosystem.
First, install the package through Composer.
composer require blok/laravel-friendable
Then include the service provider inside config/app.php.
'providers' => [
...
Blok\Friendable\FriendshipsServiceProvider::class,
...
];
Publish config and migrations
php artisan vendor:publish --provider="Blok\Friendable\FriendshipsServiceProvider"
Configure the published config in
config\friendships.php
Finally, migrate the database
php artisan migrate
use Blok\Friendable\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.