0

rolesusers 、 companyとして 3 つのテーブルがあります。およびそれらの関係

Role.php

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

User.php

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

Company.phpの場合

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

次の機能があります-

役割テーブルには、SuperAdmin (会社とその会社の TenantAdmin を追加する)、TenantAdmin (会社にユーザーを追加する)、およびユーザーとして 2 つの 3 つの役割があります。

すべてのユーザーを追加してロールを割り当てる機能を実行しました。

しかし、その会社の 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'),
    );
}

「ユーザー」タイプの ID が 3 であるという、このステートメント「Primary Key in User」のいくつかの仮定はid_users、「ユーザー」タイプである UserRole の配列を提供します。したがって、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 に答える