news 2026/8/23 15:24:54

掌握laravel-friendships:3步实现用户间的好友关系管理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
掌握laravel-friendships:3步实现用户间的好友关系管理

掌握laravel-friendships:3步实现用户间的好友关系管理

【免费下载链接】laravel-friendshipsThis package gives Eloquent models the ability to manage their friendships.项目地址: https://gitcode.com/gh_mirrors/la/laravel-friendships

laravel-friendships 是一款专为 Laravel 设计的好友关系管理扩展包,它让任意 Eloquent 模型都能像 Facebook 那样发起好友申请、接受或拒绝请求、拉黑用户、按分组管理好友关系。无论你正在开发社交产品、社区平台还是内部协作工具,掌握 laravel-friendships 都能在 3 个步骤内搭建出完整的好友系统,无需手写一张关系表的查询逻辑。

第 1 步:一分钟完成安装与环境搭建

laravel-friendships 通过 Composer 一行命令即可引入,安装过程极其简单:

composer require hootlex/laravel-friendships

随后发布配置文件和数据表迁移文件,并执行迁移:

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

✅ 安装完成后,包会自动注册 src/FriendshipsServiceProvider.php 服务提供者,创建两张核心数据表:

数据表作用迁移文件
friendships记录双方关系及状态(待确认/已接受/已拒绝/已拉黑)src/database/migrations/create_friendships_table.php
user_friendship_groups记录好友所属分组(如密友、家人)src/database/migrations/create_friendships_groups_table.php

💡 表名可在 src/config/friendships.php 中按需修改。

第 2 步:给模型启用好友能力(仅 1 行代码)

laravel-friendships 的核心是一个 Trait。只需在你的User模型(或任何 Eloquent 模型)中引入Friendable,模型就立即"长出了"管理好友关系的全部方法:

use Hootlex\Friendships\Traits\Friendable; class User extends Model { use Friendable; }

这个特性来自 src/Traits/Friendable.php,共封装了 30 余个开箱即用的方法。所有关系状态由 src/Status.php 统一管理,对应 4 种状态:

状态常量含义
0PENDING好友申请待确认
1ACCEPTED已成为好友
2DENIED申请被拒绝
3BLOCKED已被拉黑

第 3 步:用几个方法驾驭全部好友场景

发起、接受与拒绝好友申请

这是好友系统最高频的三个动作,一行代码即可完成:

$user->befriend($recipient); // 发送好友申请 $user->acceptFriendRequest($sender); // 接受申请 $user->denyFriendRequest($sender); // 拒绝申请 $user->unfriend($friend); // 解除好友关系

拉黑与解除拉黑

$user->blockFriend($friend); // 拉黑 $user->unblockFriend($friend); // 解除拉黑 $user->hasBlocked($friend); // 判断是否已拉黑对方

查询关系与好友列表

需要展示"共同好友""好友的好友"时,这些方法能省去大量关联查询:

$user->isFriendWith($friend); // 是否为好友 $user->getFriendRequests(); // 收到的待处理申请 $user->getFriends($perPage = 20); // 好友列表(可分页) $user->getMutualFriends($otherUser); // 与某人的共同好友 $user->getFriendsOfFriends(); // 好友的好友 $user->getFriendsCount(); // 好友总数

好友分组管理

在 src/config/friendships.php 中定义分组(包内置了 3 个默认分组),即可给好友打上标签:

'groups' => [ 'acquaintances' => 0, // 熟人 'close_friends' => 1, // 密友 'family' => 2, // 家人 ]
$user->groupFriend($friend, 'family'); // 把好友加入"家人"分组 $user->ungroupFriend($friend); // 从所有分组中移除

🔍 更多用法可参考项目自带的测试用例:tests/FriendshipsTest.php、tests/FriendshipsGroupsTest.php。

监听好友事件做业务扩展

每个关键动作都会触发事件,方便你做通知推送、数据统计等二次开发:

事件触发时机
friendships.sent好友申请发出
friendships.accepted申请被接受
friendships.denied申请被拒绝
friendships.blocked/friendships.unblocked拉黑 / 解除拉黑
friendships.cancelled好友关系解除

常见问题

Q:只支持 User 模型吗?A:不是。任何 Eloquent 模型引入Friendable后都能参与好友关系,数据表使用多态字段,天然支持跨模型关联。

Q:会发重复的好友申请吗?A:不会。befriend()内部会先校验关系状态,已存在有效关系或已拉黑时不会再发。

Q:如何获取好友关系模型的详细信息?A:调用$user->getFriendship($friend)即可拿到关系模型(定义于 src/Models/Friendship.php),其中包含发送方、接收方与状态。

写在最后

回顾一下完整的 3 步流程:🚀安装扩展 → 启用 Trait → 调用方法。laravel-friendships 用不到 30 行业务代码,就覆盖了好友申请、拉黑、分组、共同好友查询等社交场景的核心能力,是 Laravel 开发者构建好友关系管理功能的最短路径。

【免费下载链接】laravel-friendshipsThis package gives Eloquent models the ability to manage their friendships.项目地址: https://gitcode.com/gh_mirrors/la/laravel-friendships

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 15:21:20

如何在一个下午给旧 Mac 装上新版 macOS:OCLP 零花钱安装指南

如何在一个下午给旧 Mac 装上新版 macOS:OCLP 零花钱安装指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你的旧 MacBook 停在老系统上&#…

作者头像 李华
网站建设 2026/8/23 15:18:26

TrollInstallerX 完整指南:iOS 越狱级应用安装的最快侧载方案

TrollInstallerX 完整指南:iOS 越狱级应用安装的最快侧载方案 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX TrollInstallerX 是一款面向 iOS 14.0–16.6.1…

作者头像 李华
网站建设 2026/8/23 15:17:58

PathOfBuilding 使用指南:3个场景把流放之路Build规划一次做对

PathOfBuilding 使用指南:3个场景把流放之路Build规划一次做对 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding PathOfBuilding 是流放之路(Path o…

作者头像 李华