demency/laravel-friendships

此包为Eloquent模型提供管理友谊的能力。

1.5 2020-08-11 19:04 UTC

This package is not auto-updated.

Last update: 2020-08-15 07:58:04 UTC


README

Laravel Friendships codecov Code Climate Total Downloads Latest Stable Version License

此包为Eloquent模型提供管理友谊的能力。您可以轻松设计一个类似Facebook的友谊系统。

模型可以

  • 发送好友请求
  • 接受好友请求
  • 拒绝好友请求
  • 阻止另一个模型
  • 分组好友

安装

首先,通过Composer安装包。

composer require demency/laravel-friendships

发布配置和迁移

php artisan vendor:publish --provider="Demency\Friendships\FriendshipsServiceProvider"

config\friendships.php

最后,迁移数据库

php artisan migrate

如果您希望此包不运行迁移,您可以在您的AppServiceProviderregister方法中添加此代码。

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指南。