codelabmw / teams
为任何 UI 框架提供团队管理逻辑。
Requires
- php: ^8.0
- laravel/framework: >=10.0 ^11.0
This package is auto-updated.
Last update: 2024-09-22 07:06:06 UTC
README
来自 Codelab 的 laravel 包,用于处理 laravel 应用程序的团队管理业务逻辑。它可以与任何 UI 框架一起使用。
该包的主要目的是提供资源共享以及共享资源的划分。
安装
要在您的 laravel 项目中添加此包,请运行以下命令。
composer require codelabmw/teams
安装后,运行以下命令以发布迁移和配置文件。
php artisan vendor:publish --tag=codelab-teams
然后运行以下命令以创建必要的表。
php artisan migrate
用法
创建团队
要开始创建团队,请在作为团队实体的模型 (您选择的任何模型以拥有团队) 中添加 HasTeam
特性。
<?php ... use Codelab\Teams\Traits\HasTeam; class User extends Authenticatable { HasTeam; ... }
一旦配置好实体,您就可以使用团队关系方法或提供的辅助方法创建团队。
-
使用团队实体的
teams
关系方法。$team = $user->teams()->create([...])
-
使用团队实体的
createTeam
辅助方法。$team = $user->createTeam([...])
create
或 createTeam
函数期望以下字段。
name: 团队名称。必需。
slug: 通常是名称的小写和连字符形式。可选。
description: 团队的可选描述。可选。
status: 表示团队是否活跃或非活跃的整数(1 和 2 分别表示活跃和非活跃)。默认为 1(活跃)。您可以使用包提供的 Status 枚举。
您可以在这里找到辅助方法的完整列表。
向团队添加成员
要向团队添加成员,首先您必须将 IsMember
特性添加到您的作为成员实体的模型。
<?php ... use Codelab\Teams\Traits\IsMember; class User extends Authenticatable { IsMember; ... }
默认情况下,包将假设 App\Models\User
类是成员实体。这种行为可以在配置文件中更改,在 member
属性中指定您自己的成员实体类。
<?php return [ 'member' => Your\Custom\Entity::class ];
一旦配置好成员实体,您可以使用以下任一选项向团队添加成员。
-
使用团队的
members
关系方法。// $member = new Your\Member\Entity $team->members()->attach($member);
-
使用团队的
addMember
辅助方法。$team->addMember($member->id)
addMember
方法需要成员的 id,可以是整数或字符串。. -
使用成员的
joinTeam
辅助方法。$member->joinTeam($team->id);
joinTeam
方法需要团队的 id,可以是整数或字符串。.
您可以在这里找到辅助方法的完整列表。
向团队添加资源
由于包不知道您的应用程序将有哪些资源和资源类型,因此需要手动处理。以下是添加资源共享的步骤。
首先,在您的应用程序中,将 IsResource
特性添加到资源实体 (作为资源的模型类)。
<?php ... use Codelab\Teams\Traits\IsResource; class Task extends Model { IsResource; ... }
其次,在自定义团队类中扩展基本 Codelab\Teams\Models\Team
类。
<?php ... use Codelab\Teams\Models\Team; class CustomTeam extends Team { ... }
要让包知道新的自定义类,更改配置文件中的 team
属性。
<?php return [ 'team' => Your\Custom\Team::class ];
然后,在新的自定义团队类中使用 morphByResource
方法在资源和团队之间创建关系。
<?php ... use Codelab\Teams\Models\Team; class CustomTeam extends Team { /** * Defines a has many tasks relationship on team. * * @return MorphToMany */ public function tasks(): MorphToMany { return $this->morphedByResource(Task::class); } }
一旦完成所有这些,您就可以使用您刚刚创建的关系方法向团队对象添加资源。
$team->tasks()->create([...]);
$team->tasks()->attach($task);
术语表
辅助方法
在具有团队的对象上
createTeam([ 'name' => $name // required, 'slug' => $slug // optional, 'description' => $description // optional, 'status' => $status // either 1 (active) or 2 (inactive) defaults to 1, ]): Team
teams(): MorphMany
findTeam( $id // required. ): Team
deleteTeam(
$id // required
): void
hasTeam( $id //required ): bool
在团队对象上
members(): MorphToMany
addMember(
$id // member id, required.
): void
removeMember(
$id // member id, required
): void
hasMember( $id // member id, required ): bool
在成员对象上
memberTeams(): MorphToMany
joinTeam(
$id // team id, required.
): void
exitTeam(
$id // team id, required.
): void
isMemberOf(
$id // team id, required.
): bool
在资源对象上
teams(): MorphToMany
感谢您查看这个包,如果您喜欢,请不要忘记分享和🌟。