찾다

 >  Q&A  >  본문

Laravel의 세 열(역할, 팀, 프로젝트) 사이의 관계.

<p>Laravel에서는 팀, 프로젝트, 사용자, 역할 및 권한 간의 관계가 있습니다. <br /><br />사용자는 여러 팀을 가질 수 있고, 팀은 여러 프로젝트를 가질 수 있으며, 사용자는 사용자 역할, 팀 역할 및 프로젝트 역할을 가질 수 있습니다. 프로젝트별, 팀별, 해당 사용자에 대해서만 사용자 권한을 얻는 방법을 알고 싶습니다.


<p><strong>사용자 테이블</strong></p>
P粉645569197P粉645569197517일 전539

모든 응답(1)나는 대답할 것이다

  • P粉471207302

    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 테이블에 저장됩니다.

    그런 다음 이러한 역할을 기반으로 각 프로젝트 및 팀 내에서 각 사용자의 책임을 결정할 수 있습니다.


    회신하다
    0
  • 취소회신하다