hypefactors/laravel-follow 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

hypefactors/laravel-follow

Composer 安装命令:

composer require hypefactors/laravel-follow

包简介

Laravel 9 Follow System for Eloquent models.

README 文档

README

Build Status Software License Latest Version on Packagist Total Downloads

Laravel 10 Follow System for Eloquent models.

This package is compliant with the FIG standards PSR-1, PSR-2 and PSR-4 to ensure a high level of interoperability between shared PHP. If you notice any compliance oversights, please send a patch via pull request.

Version Matrix

Version Laravel PHP Version
9.x 10.x >= 8.1
8.x 9.x >= 8.0
7.x 8.x >= 7.3
6.x 7.x >= 7.2.5
5.x 6.x >= 7.2
4.x 5.8.x >= 7.1
3.x 5.7.x >= 7.1
2.x 5.6.x >= 7.1
1.x 5.5.x >= 7.0

Installation

You can install the package via composer:

composer require hypefactors/laravel-follow

The package will be automatically registered.

Now you need to run the migrations:

php artisan migrate

Usage

Preparing the Eloquent Models

To allow an entity to be followed or to follow other entities, the corresponding models have to implement an interface and make usage of a trait.

Here's how we do it for a User and Company entity, where a user will be able to follow a company and the company will be able to be followed:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Hypefactors\Laravel\Follow\Traits\CanFollow;
use Hypefactors\Laravel\Follow\Contracts\CanFollowContract;

class User extends Model implements CanFollowContract
{
    use CanFollow;
}
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Hypefactors\Laravel\Follow\Traits\CanBeFollowed;
use Hypefactors\Laravel\Follow\Contracts\CanBeFollowedContract;

class Company extends Model implements CanBeFollowedContract
{
    use CanBeFollowed;
}

Note: If required, an entity can follow and can also be followed, just implement both interfaces and traits on the same model to achieve that requirement.

Following an Entity

You can follow an entity like this:

$company = Company::find(1);

$user = User::find(1);
$user->follow($company);

You can also perform the same through the entity that's going to be followed:

$user = User::find(1);

$company = Company::find(1);
$company->addFollower($user);

Follow Many Entities

You can follow many entities like this:

$companies = Company::whereIn('id', [1, 3, 10])->get();

$user = User::find(1);
$user->followMany($companies);

You can also perform the same through the entity that's going to be followed:

$users = User::whereIn('id', [1, 3, 10])->get();

$company = Company::find(1);
$company->addManyFollowers($users);

Unfollowing an Entity

You can unfollow an entity like this:

$company = Company::find(1);

$user = User::find(1);
$user->unfollow($company);

You can also perform the same through the entity that's going to be unfollowed:

$user = User::find(1);

$company = Company::find(1);
$company->removeFollower($user);

Unfollow Many Entities

You can unfollow many entities like this:

$companies = Company::whereIn('id', [1, 3, 10])->get();

$user = User::find(1);
$user->unfollowMany($companies);

You can also perform the same through the entity that's going to be unfollowed:

$users = User::whereIn('id', [1, 3, 10])->get();

$company = Company::find(1);
$company->removeManyFollowers($users);

Determining if an Entity is Following another Entity

You can unfollow an entity like this:

$company = Company::find(1);

$user = User::find(1);
$user->isFollowing($company);

You can also perform the same through the entity that's going to be followed:

$user = User::find(1);

$company = Company::find(1);
$company->hasFollower($user);

Determine if an Entity has Followings

$user = User::find(1);

if ($user->hasFollowings()) {
    echo "User is following {$user->followings->count()} entities.";
}

Determine if an Entity has Followers

$company = Company::find(1);

if ($company->hasFollowers()) {
    echo "Company has {$company->followers->count()} followers.";
}

Get list of Followings

To get a list of followings (entities another entity is following)

$user = User::find(1);

$followings = $user->followings

Get List of Followers

To get a list of followers (entities that are following an entity)

$company = Company::find(1);

$followers = $company->followers

Get List of Followings by Entity Type

Get a list of followings (entities another entity is following) and filter by an entity type

$user = User::find(1);

$followings = $user->followings()->whereFollowableType(Company::class)->get();

Get List of Followers by Entity Type

Get a list of followers (entities that are following an entity) and filter by an entity type

$company = Company::find(1);

$followers = $company->followers()->whereFollowerType(User::class)->get();

Contributing

Thank you for your interest in Laravel Follow. Here are some of the many ways to contribute.

Security

If you discover any security related issues, please email support@hypefactors.com instead of using the issue tracker.

License

Laravel Follow is licenced under the BSD 3-Clause License. Please see the license file for more information.

hypefactors/laravel-follow 适用场景与选型建议

hypefactors/laravel-follow 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 18.76k 次下载、GitHub Stars 达 49, 最近一次更新时间为 2017 年 08 月 26 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「php」 「laravel」 「Follow」 「hypefactors」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 hypefactors/laravel-follow 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 hypefactors/laravel-follow 我们能提供哪些服务?
定制开发 / 二次开发

基于 hypefactors/laravel-follow 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 18.76k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 49
  • 点击次数: 9
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 49
  • Watchers: 4
  • Forks: 6
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2017-08-26