ohkannaduh / groups
此软件包已 废弃 并不再维护。未建议替代软件包。
在 Laravel 中分组用户。
1.2.1
2019-06-07 18:22 UTC
Requires
- php: ^7.2
Requires (Dev)
- block8/php-docblock-checker: ^1.10
- laravel/laravel: ^5.8
- orchestra/testbench: ^3.8
- phan/phan: ^2.1
- phpmd/phpmd: ^2.6
This package is auto-updated.
Last update: 2020-12-07 21:48:29 UTC
README
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
。