sebacarrasco93/laravel-friendships

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

2.0.2 2023-11-28 06:18 UTC

This package is auto-updated.

Last update: 2024-09-28 08:06:33 UTC


README

Build Status Code Climate Test Coverage Total Downloads Version Software License Join the chat at https://gitter.im/laravel-friendships/Lobby

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

⚠️ 此包最初由 Hootlex 开发。我将其命名空间改为SebaCarrasco93,以避免在安装了两个包(例如,从旧Laravel版本升级)时发生名称冲突。

此版本通过将其更改为 "dispatch" 修复了Laravel 10+中的错误:"方法 Illuminate\Events\Dispatcher::fire 不存在"。

模型可以

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

安装

首先,通过Composer安装此包。

composer require sebacarrasco93/laravel-friendships

如果您使用的是Laravel < 5.5,则需要将 Hootlex\Friendships\FriendshipsServiceProvider 添加到您的 config/app.php 提供者数组中

SebaCarrasco93\Friendships\FriendshipsServiceProvider::class,

发布配置和迁移

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

在以下位置配置发布的配置

config/friendships.php

最后,迁移数据库

php artisan migrate

设置模型

use SebaCarrasco93\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);
...

事件

这是为每个动作默认触发的事件列表

贡献

查看 CONTRIBUTING 指南。