答案 0 :(得分:0)
您应该能够使用Yii(或任何现代MVC框架)来实现这一目标。
确保您在各自的模型类中定义了关系(代码假定您使用的是Yii 1)。
Class User extends CActiveRecord
{
...
public function relations(){
return array(
'role' => array(self::BELONGS_TO, 'Roles', 'user_id'),
);
}
...
}
在您的其他课程中定义适当的关系,您应该能够像这样访问它们......
// Defined relation is BELONGS_TO
$belongsToModel = $model->definedRelation;
// Defined relation is HAS_MANY
$arrayOfCActiveRecords = $model->definedRelation;
如果定义的关系是HAS_MANY,您可以迭代数组并访问各个记录。
更新
根据你的评论,做你想做的唯一简单方法是给你的角色一个branch_id(并确保你的分支有一个company_id)。如果特定角色对于多个分支是通用的,那么您当然可以给它们相同的描述,但是在数据库中它们需要彼此区分,因为它们实际上是不同的角色。
由于您无法将role_id分配给用户,也无法将user_id分配给角色,因此您必须创建一个关联表来加入它们(如果您愿意,可以为其创建模型;访问this thread在Yii论坛获取更多信息)。
一旦你这样做,将用户连接到公司应该是这样的......
// in your User model...
private $_roles = array();
public function getRoles(){
if(isset($this) && get_class($this) == __CLASS__){
$query = "select * from users_roles where user_id = {$this->id}";
$this->_roles = Yii::app()->db->createCommand($query)->queryAll();
}
return $this->_roles;
}
现在你应该能够调用$roles = $user->roles
并迭代角色,获得分支然后获得公司。