我有3张桌子
id name
id user_id
id manager_id
从项目模型中,如何在用户表中显示名称。
yii建立经理和项目之间的关系
'managers'=>数组(self :: BELONGS_TO,'manager','manager_id'),
所以在视图中我可以显示managers.user_id。
但是我可以在项目管理者之间建立关系,然后在管理者与用户之间建立关系并获取用户名 在项目表中
例如,对于projects表中的每个manager_id,我想在manager表中查找该manager的user_id,然后在User表中找到用户名?
感谢任何帮助。谢谢。
答案 0 :(得分:0)
你应该看看here。通过在关系查询中使用“通过”,您将能够从项目实体中获取用户并获得所需的所有属性。
答案 1 :(得分:0)
您可以背靠背使用两种关系来检索该信息:
$project = Project::model()->with('manager.user')->findByPk((int)$id);
print $project->manager->user->name;
第一行检索项目并急切加载管理器和用户信息。但即使没有急切的加载,Yii也会加载(它只需要两次数据库查询)。另请注意BELONGS_TO关系使用单数名称。它使得关系的另一端更加清晰。
我还建议考虑将经理和用户表合并到一个表中,除非您确定需要将它们分开。然后将isManager布尔值添加到User表中,并将manager_id直接链接到用户表。
如果您需要一个单独的管理员模型,您可以随时为使用用户表的管理器创建一个新模型,继承用户模型并定义一个defaultScope(),它根据isManager布尔值过滤管理器。
class Manager extends User
{
public function defaultScope()
{
return array(
'condition'=>'isManager=1',
);
}
}
Yii要做很多很酷的事情!