ohkannaduh/groups

此软件包已 废弃 并不再维护。未建议替代软件包。

在 Laravel 中分组用户。

1.2.1 2019-06-07 18:22 UTC

This package is auto-updated.

Last update: 2020-12-07 21:48:29 UTC


README

PHP Censor

Laravel Groups

此软件包允许您对用户模型进行分组,您可以用于各种目的。

安装

首先,通过 composer 安装此软件包。

composer require ohkannaduh/groups

如果您使用的是 Laravel 版本 5.5 或更低,您需要将 OhKannaDuh\Groups\GroupsServiceProvider 注册到您的 config/app.php 提供者数组中。

    'providers' => [
    ...
        /*
        * Package Service Providers...
        */
        OhKannaDuh\Groups\GroupsServiceProvider::class
    ...
    ],

要发布配置文件和迁移,请运行

php artisan vendor:publish --provider="OhKannaDuh\Groups\GroupsServiceProvider"

通过修改 config/groups.php 配置此软件包

然后最后运行迁移

php artisan migrate

配置您的 User 模型

...
use OhKannaDuh\Groups\Traits\Groupable;
use OhKannaDuh\Groups\Contracts\GroupableContract;
...
class User extends Model implements GroupableContract
{
    use Groupable;
    ...
}

用法

将用户添加到组

$group->addUser($user);

将一组用户添加到组

$group->addUsers($users);

从组中删除用户

$group->removeUser($user);

从组中删除一组用户

$group->removeUsers($users);

检查用户是否在组中

$group->contains($user)

获取组中所有用户

$group->users;

获取用户的全部组

$user->groups;

获取组中所有消息

$group->messages;

获取消息的发送者

$message->user;

获取消息的组

$message->group

可添加到组的逻辑

您可以将此方法添加到您的用户类中,以添加将用户添加到组的自定义逻辑

public function canAddToGroup(\OhKannaDuh\Groups\Model\Group $group): bool

以下是一个示例

public function canAddToGroup(\OhKannaDuh\Groups\Model\Group $group): bool
{
    foreach ($group->users as $user) {
        /**
         * This user has been blocked or has blocked the other user.
         * Don't add them to the group.
         */
        if ($user->isBlocked($this) === true) {
            return false;
        }
    }

    return true;
}

此方法默认返回 true

从组中删除的逻辑

可以执行类似操作以确定用户是否可以离开组

public function canRemoveFromGroup(\OhKannaDuh\Groups\Model\Group $group): bool

以下是一个示例

public function canRemoveFromGroup(\OhKannaDuh\Groups\Model\Group $group): bool
{
    # Don't remove the user if they are the last remaining group member
    return count($group) > 1;
}

此方法默认返回 true

向组发送消息的逻辑

可以执行类似操作以确定用户是否可以向组发送消息

public function canSendMessageToGroup(\OhKannaDuh\Groups\Model\Group $group): bool

以下是一个示例

public function canSendMessageToGroup(\OhKannaDuh\Groups\Model\Group $group): bool
{
    # Only users that are admins can send messages to groups
    return $this->isAdmin();
}

此方法默认返回 true