Yii上查询相关表格的正确方式


Correct way of querying related tables on Yii

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

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

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

  1. 家庭成员:有登录名/密码的用户,但不是超级用户
  2. 众议院行政人员:统治特定众议院的众议院成员
  3. superusers:yii用户模块处理这些超级用户(isAdmin()返回true)

我需要的是创建另一个方法(希望基于isAdmin()),如果用户是某个特定房子的houseAdmin,该方法将返回true。该函数类似于:"如果是表house_admin中值为user_id=current_user; house_id=Y的元组,则返回true"

我怎么能这么做?

不确定DB列的确切名称,但您可以尝试以下操作:

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;
}