Yii 多模型关系

Yii 多模型关系,yii,Yii,我有三张桌子 使用者 身份证名称 经理 用户识别码 项目 id经理\u id 从项目模型如何在用户表中显示名称 yii在经理和项目之间建立关系 'managers'=>数组(self::属于'manager'、'manager\u id') 因此,在视图中,我可以显示managers.user\u id 但是我可以在项目与经理之间建立关系,然后再与经理与用户建立关系,并获取用户的名称 在项目表中 例如,对于项目表中的每个经理id,我想在经理表中查找该经理的用户id,然后在用户表中查找用户名 感谢

我有三张桌子

使用者 身份证名称

经理 用户识别码

项目 id经理\u id

从项目模型如何在用户表中显示名称

yii在经理和项目之间建立关系

'managers'=>数组(self::属于'manager'、'manager\u id')

因此,在视图中,我可以显示managers.user\u id

但是我可以在项目与经理之间建立关系,然后再与经理与用户建立关系,并获取用户的名称 在项目表中

例如,对于项目表中的每个经理id,我想在经理表中查找该经理的用户id,然后在用户表中查找用户名


感谢您的帮助。谢谢

你应该去看看。通过在关系查询中使用“through”,您将能够从项目实体联系到用户,并获得所需的所有属性。

您可以使用两个背对背的关系来检索该信息:

$project = Project::model()->with('manager.user')->findByPk((int)$id);
print $project->manager->user->name;
第一行检索项目并加载经理和用户信息。但即使没有急切的加载,Yii也会加载东西(只需再进行两次数据库查询)。还要注意的是,在“属于”关系中使用单数名称。这让关系的另一端更加清晰

我还建议您考虑将manager表和user表合并到一个表中,除非您确实需要将它们分开。然后将isManager布尔值添加到用户表,并将manager_id直接链接到用户表

如果需要单独的管理器模型,则始终可以为管理器创建一个新模型,该模型使用用户表,从用户模型继承,并定义一个defaultScope(),该模型通过isManager布尔值过滤管理器

class Manager extends User
{
    public function defaultScope()
    {
        return array(
            'condition'=>'isManager=1',
        );
    }
}
有这么多很酷的事情要和Yii一起做