demency / laravel-friendships
此包为Eloquent模型提供管理友谊的能力。
1.5
2020-08-11 19:04 UTC
Requires
- php: >=7.1.3
- illuminate/container: ^5.8|^6.0|^7.0
- illuminate/contracts: ^5.8|^6.0|^7.0
Requires (Dev)
- doctrine/dbal: ^2.10
- fzaninotto/faker: ^1.9
- orchestra/testbench: ^3.8|^4.0|^5.0
- phpunit/phpunit: ^8.0|^9.0
This package is not auto-updated.
Last update: 2020-08-15 07:58:04 UTC
README
此包为Eloquent模型提供管理友谊的能力。您可以轻松设计一个类似Facebook的友谊系统。
模型可以
- 发送好友请求
- 接受好友请求
- 拒绝好友请求
- 阻止另一个模型
- 分组好友
安装
首先,通过Composer安装包。
composer require demency/laravel-friendships
发布配置和迁移
php artisan vendor:publish --provider="Demency\Friendships\FriendshipsServiceProvider"
在
config\friendships.php
最后,迁移数据库
php artisan migrate
如果您希望此包不运行迁移,您可以在您的AppServiceProvider
的register
方法中添加此代码。
use Demency\Friendships\FriendshipsServiceProvider; FriendshipsServiceProvider::$runsMigrations = false;
设置模型
use Demency\Friendships\Traits\Friendable; class User extends Model { use Friendable; ... }
如何使用
发送好友请求
$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);
朋友
要获取朋友模型(例如 User)的集合,请使用以下方法
获取朋友
$user->getFriends();
分页获取朋友
$user->getFriends($perPage = 20);
获取朋友的朋友
$user->getFriendsOfFriends($perPage = 20);
分页获取特定群组中的朋友集合
$user->getFriends($perPage = 20, $group_name);
获取与另一个用户的共同朋友
$user->getMutualFriends($otherUser, $perPage = 20);
使用高级分页和范围状态获取朋友
// Methods usages (Status available: pending, denied, blocked and accepted.) (Paginators available: none, default, simple) $user->{status}Friends($resultsPerPage = 0, $paginationType = 'none'); // Example #1: (Get accepted friends using default paginator with 25 results per page). $user->acceptedFriends(25, 'default'); // Example #2: (Get pending friends using simple paginator with 10 results per page). $user->pendingFriends(10, 'simple'); // Example #3: (Get all denied friends without pagination). $user->deniedFriends(); // Example #3: (Get denied friends using default paginator with 30 results per page). $user->blockedFriends(30);
朋友群组
朋友群组在 config/friendships.php
文件中定义。该包包含一些默认群组。要修改它们或添加自己的群组,您需要指定一个 slug
和一个 key
。
// config/friendships.php ... 'groups' => [ 'acquaintances' => 0, 'close_friends' => 1, 'family' => 2 ]
由于您已配置朋友群组,您可以使用以下方法对朋友进行分组/取消分组。
分组一个朋友
$user->groupFriend($friend, $group_name);
从家庭群组中移除一个朋友
$user->ungroupFriend($friend, 'family');
从所有群组中移除一个朋友
$user->ungroupFriend($friend);
获取特定群组中朋友的数量
$user->getFriendsCount($group_name);
要按群组过滤 friendships
,您可以传递一个群组slug。
$user->getAllFriendships($group_name); $user->getAcceptedFriendships($group_name); $user->getPendingFriendships($group_name); ...
事件
这是为每个操作默认触发的事件列表
事件名称 | 触发 |
---|---|
Demency\Friendships\Events\Sent | 当发送友情请求时 |
Demency\Friendships\Events\Accepted | 当接受友情请求时 |
Demency\Friendships\Events\Denied | 当拒绝友情请求时 |
Demency\Friendships\Events\Blocked | 当阻止朋友时 |
Demency\Friendships\Events\Unblocked | 当取消阻止朋友时 |
Demency\Friendships\Events\Cancelled | 当取消友情时 |
贡献
请参阅CONTRIBUTING指南。