在Yii上查询相关表的正确方法

时间:2013-11-27 19:53:47

标签: php yii

我在Yii项目中使用yii-user模块进行用户身份验证/授权。它提供了处理超级用户的方法。特别是我使用函数isAdmin():

public static function isAdmin() {
    if(Yii::app()->user->isGuest)
        return false;
    ...
}

在我的项目中,我有 House 实体,还有一种新类型的用户: HouseAdmins (以及DB中相应的house和house_admin表)。所以我有3种类型的用户:

  1. 内部成员:具有登录名/密码但不是超级用户的用户。
  2. 房屋管理员:管理特定房屋的房屋成员。
  3. 超级用户:yii-user模块处理它们的那些超级用户(isAdmin()返回true)。
  4. 我需要的是创建另一个方法(希望基于isAdmin()),如果用户是特定房屋的houseAdmin,则返回true。该函数类似于:“如果表house_admin中的元组值为user_id=current_user; house_id=Y”,则返回true“

    我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

不确定确切的数据库列名称,但您可以尝试:

public function isHouseAdminOf($house_id)
{
   $cur_user_id = Yii::app()->user->id;

   $any = HouseAdmin::model()->findByAttributes(array(
                                    'house_id'=>$house_id, 
                                    'user_id'=>$cur_user_id
                                  ));

   if(isset($any)) 
      return true;

   return false;
}