三个表项目,用户,问题。
关系:
我想做什么:
在Yii框架逻辑中:选择项目及其所有用户,这些用户必须只有所选项目的问题。
在表格逻辑中:选择某个项目 AND 用户的问题。
我想模仿的是什么sql代码:
在Issue.i_id =上选择Issue.i_name FROM Issue Join Project Project.p_id在Issue.i_id User.u_id
上加入用户
我想在Yii做什么:
//get Project
$model = Project::model()->findByPk( $p_id );
//get Project's users
$users = $model->users;
//get each of users issues of selected project
foreach( $users as $user )
$issues = $user->issues;
答案 0 :(得分:2)
要解决此问题,您必须在ralations方法中使用through。
项目模型关系方法应如下所示:
public function relations()
{
return array(
'users' => array(self::MANY_MANY, 'User', 'tbl_project_user_assignment(project_id, user_id)'),
//'issues' => array(self::HAS_MANY, 'Issue', 'project_id'),
'issues' => array(self::HAS_MANY,'Issue',array('id'=>'owner_id'),'through'=>'users'),
'columns' => array(self::MANY_MANY, 'Column', 'tbl_project_rel_column(p_id,c_id)'),
);
}
现在正在行动中选择项目,它是所选项目的用户和用户的帖子(或在我的案例中):
$project = Project::model()->with('users','issues')->findByPk(1);
$users = $project->users;
foreach($users as $user) {
echo $user->username."<br/>";
}
$issues = $project->issues;
foreach($issues as $issue) {
echo $issue->name."<br/>";
}