wimil/followers

laravel eloquent 的关注和被关注者

1.0 2022-02-27 16:41 UTC

This package is auto-updated.

Last update: 2024-09-27 21:58:13 UTC


README

laravel 的关注系统,一个模型可以关注另一个模型。

安装

需求

  • PHP 7.0+
  • Laravel 5.5+

您可以使用 composer 安装此包

$ composer require wimil/followers

然后向 config/app.php 添加服务提供者

Wimil\Followers\Provider::class

发布迁移文件

$ php artisan vendor:publish --provider="Wimil\Followers\Provider" --tag="migrations"

如果需要修改默认配置,可以选择发布配置文件(可选)

$ php artisan vendor:publish --provider="Wimil\Followers\Provider" --tag="config"

并创建表

$ php artisan migrate

最后,在可关注和可被关注的模型中添加特性函数

use Wimil\Followers\Traits\Followable;

class User extends Model
{
    use Followable;
}

示例

$bob = User::find(1);
$alin = User::find(2);

$bob->follow($alin);
$alin->follow($bob);
$bob->follow([2, 'App\User']);
$alin->follow([1, 'App\User']);

$bob->toggleFollow($alin);
$alis->toggleFollow($bob);
$bob->toggleFollow([2, 'App\User']);
$alin->toggleFollow([1, 'App\User']);

用法

可关注

use Wimil\Follow\Traits\CanFollow;

class User extends Model
{
    use CanFollow;
}

示例 所有可用的 API 列表如下。

$user = User::find(1);
$page = Page::find(1);

$user->follow($page);
$user->toggleFollow($page);
$user->unfollow($page);
$user->isFollowing($page);

可被关注

use Wimil\Follow\Traits\CanBeFollowed;

class Page extends Model
{
    use CanBeFollowed;
}

示例 所有可用的 API 列表如下。

$user = User::find(1);
$page = Page::find(1);

$page->addFollower($user);
$page->deleteFollower($user);
$page->toggleFollower($user);
$page->isFollowedBy($user);

如果您想创建自己的关注者模型,请创建一个新的模型并扩展我的关注者模型。

use Wimil\Followers\Model\Follower as BaseFollower;

class Follower extends BaseFollower
{
    // ...
}

并且别忘了在 config/followers.php 文件中更新模型名称。

外观

您还可以使用外观别名,必须在 config/app.php 中包含外观别名。

'Follow' => Wimil\Followers\Facades\Follow::class;

用法

$bob = User::find(1);
$alin = User::find(2);

Follow::attach($bob, $alin);
Follow::attach($alin, $bob);
Follow::attach([1, 'App\User'], [2, 'App\User']);
Follow::attach([2, 'App\User'], [1, 'App\User']);

Follow::detach($bob, $alin);
Follow::toggle($bob, $alin);
Follow::exists($bob, $alin);

许可证

MIT

由 wimil 创建