somecv / laravel-friends
此包为 Eloquent 模型提供了管理友谊的能力。
dev-main
2022-06-13 21:37 UTC
Requires
- php: ^8.0
Requires (Dev)
- doctrine/dbal: ^2.5
- fakerphp/faker: ^1.17
- laravel/laravel: ^8.0
- mockery/mockery: ^1.4.2
- orchestra/testbench: ^6.18
- phpunit/php-code-coverage: ^9.2
- phpunit/phpunit: ^9.3
- symfony/console: ^5.2.0
This package is auto-updated.
Last update: 2024-09-14 02:38:08 UTC
README
此包为 Eloquent 模型提供了管理友谊的能力。您可以轻松设计一个类似于 Facebook 的朋友系统。
模型可以
- 发送好友请求
- 接受好友请求
- 拒绝好友请求
- 阻止另一个模型
- 分组好友
安装
首先,通过 Composer 安装此包。
composer require cuitcode/laravel-friendships
如果您使用的是 Laravel < 5.5,您需要在 config/app.php 提供者数组中添加 Cuitcode\Friendships\FriendshipsServiceProvider
Cuitcode\Friendships\FriendshipsServiceProvider::class,
发布配置和迁移文件
php artisan vendor:publish --provider="Cuitcode\Friendships\FriendshipsServiceProvider"
在以下位置配置发布的配置
config\friendships.php
最后,迁移数据库
php artisan migrate
设置一个模型
use Cuitcode\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);
好友组
好友组定义在 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); ...
事件
这是为每个操作默认触发的事件列表
贡献
查看贡献指南。