P粉4712073022023-07-27 13:42:45
귀하의 설명에 따라 다음과 같이 했습니다.
Table****************
project_user 테이블:
Schema::create('project_user', function (Blueprint $table) { $table->unsignedBigInteger('project_id'); $table->unsignedBigInteger('user_id'); });
permission_role 테이블:
Schema::create('permission_role', function (Blueprint $table) { $table->unsignedBigInteger('permission_id'); $table->unsignedBigInteger('role_id'); });
role_user 테이블:
Schema::create('role_user', function (Blueprint $table) { $table->unsignedBigInteger('role_id'); $table->unsignedBigInteger('user_id'); });
모델 *************
사용자 모델:
/** * Team Relationship * * @return BelongsToMany */ public function teams(): BelongsToMany { return $this->belongsToMany(Team::class); } /** * Project Relationship * * @return BelongsToMany */ public function projects(): BelongsToMany { return $this->belongsToMany(Project::class); } /** * Role Relationship * * @return BelongsToMany */ public function roles(): BelongsToMany { return $this->belongsToMany(Role::class, 'role_user'); }
팀 모델:
/** * User Relationship * * @return BelongsToMany */ public function users(): BelongsToMany { return $this->belongsToMany(User::class); } /** * Project Relationship * * @return HasMany */ public function projects(): HasMany { return $this->hasMany(Project::class); }
프로젝트 모델:
/** * Team Relation * * @return BelongsTo */ public function team(): BelongsTo { return $this->belongsTo(Team::class); } /** * User Relation * * @return BelongsToMany */ public function users(): BelongsToMany { return $this->belongsToMany(User::class); }
역할 모델:
/** * Permission Relation * * @return BelongsToMany */ public function permissions(): BelongsToMany { return $this->belongsToMany(Permission::class, 'permission_role'); } /** * User Relation * * @return BelongsToMany */ public function users(): BelongsToMany { return $this->belongsToMany(User::class,'role_user'); }
권한 모델:
/** * Role Relation * * @return BelongsToMany */ public function roles(): BelongsToMany { return $this->belongsToMany(Role::class, 'permission_role'); }
먼저, we 원하는 역할을 만듭니다. 예:
역할 1: 이름 = 최고 관리자, 유형 = 사용자
역할 2: 이름 = 팀 리더, 유형 = 팀
역할 3: 이름 = 프로젝트 개발자, 유형 = 프로젝트
이제 역할을 기대합니다. 우리 사용자에게 할당되었습니다. 이러한 역할은 role_user 테이블에 저장됩니다.
그런 다음 이러한 역할을 기반으로 각 프로젝트 및 팀 내에서 각 사용자의 책임을 결정할 수 있습니다.