0

我有三个表作为角色用户公司。以及他们的关系

对于Role.php

public function relations()
    {       
       return array(
        'userRoles' => array(self::HAS_MANY, 'UserRoles', 'id_roles'),
       );
    }

对于用户.php

public function relations()
    {
        return array(
            'userRoles' => array(self::HAS_MANY, 'UserRole', 'id_users'),
            'companies' => array(self::BELONGS_TO, 'Company', 'id_companies'),
        );
    }

对于公司.php

public function relations()
    {
        return array(
        'idCompnayType' => array(self::BELONGS_TO, 'CompanyType', 'id_company_type'),
        'companies' => array(self::HAS_MANY, 'Company', 'id_companies'),
        );
    }

我有以下功能-

在角色表中有两个三个角色,即超级管理员(添加公司及其对该公司的租户管理员)、租户管理员(将用户添加到公司)和用户。

我已经完成了添加所有用户并为他们分配角色的功能。

但是,当该公司的 TenantAdmin 登录时,如何根据他们的公司显示普通用户。

4

1 回答 1

1

through您可以在您的关系上使用选项。

对于公司模型:

public function relations()
{
    return array(
        'idCompnayType' => array(self::BELONGS_TO, 'CompanyType', 'id_company_type'),
        'companies' => array(self::HAS_MANY, 'Company', 'id_companies'),
        'users' => array(self::HAS_MANY, 'User', 'id_companies'),
        'userRoles' => array(self::HAS_MANY,'UserRoles',array('id_users'=>'id_users'),'on'=>'userRoles.id_roles = 3','through'=>'users'),
    );
}

对于 UserRole 模型,请确保您具有如下关系:

public function relations()
{
    return array(
        'user' => array(self::BELONGS_TO, 'User', 'id_users'),
    );
}

此语句的几个假设 User 中的 Primary Key 是id_users'user' 类型的 ID 为 3。这将为您提供一个 UserRole 数组,它们是 'user' 类型。因此,您可以使用 foreach 轻松列出用户。

$user = User:model()->findByPk(Yii::app()->user->id);
$company = Company::model()->findByPk($user->id_companies);
foreach($company->userRoles as $userRole) {
    $user = $userRole->user;
}
于 2013-07-05T12:57:29.967 回答