我有三张桌子
用户
id名称
经理
id user_id
项目
id manager_id
在projects模型中,如何在用户表中显示名称。
yii建立经理和项目之间的关系
‘'managers’管理器数组(self::BELONGS_TO,‘=>’,'manager_id'),
因此,我可以在视图中显示managers.user_id。
但我可以在项目与经理之间建立关系,然后在经理与用户之间建立关系,并在项目表中获取用户的名称
例如,对于projects表中的每个经理,在manager_id表中查找该经理的user_id,然后在user表中找到用户名?
任何帮助都是非常感谢的。谢谢。
发布于 2012-04-13 03:56:24
你应该看看here。通过在您的关系查询中使用'through‘,您将能够从项目实体访问用户,并获得您想要的所有属性。
发布于 2012-04-13 11:57:53
您可以使用两个背靠背关系来检索该信息:
$project = Project::model()->with('manager.user')->findByPk((int)$id);
print $project->manager->user->name;第一行检索项目并急切加载经理和用户信息。但是,即使没有立即加载,Yii也会加载内容(只需再执行两次数据库查询)。还要注意在BELONGS_TO关系中使用单数名称。这让关系的另一端变得更加清晰。
我还建议考虑将管理器表和用户表合并到一个表中,除非您确实需要将它们分开。然后将isManager布尔值添加到用户表中,并将manager_id直接链接到用户表。
如果您需要为经理创建一个单独的模型,您可以始终为经理创建一个新的模型,该模型使用用户表,继承自用户模型,并定义一个defaultScope(),它根据isManager布尔值向下过滤经理...
class Manager extends User
{
public function defaultScope()
{
return array(
'condition'=>'isManager=1',
);
}
}有那么多很酷的事情要和Yii一起去做!
https://stackoverflow.com/questions/10129248
复制相似问题