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