gpt4 book ai didi

yii - 双连接选择

转载 作者:行者123 更新时间:2023-12-04 02:39:30 24 4
gpt4 key购买 nike

三个表项目用户问题

  • 项目表列:p_id,name,...
  • 用户表列:u_id 用户名...
  • 问题表列:i_id i_name ...

关系:

  • 项目有很多用户 - 1..*
  • 项目有很多用户 - 1..*
  • 项目有很多问题 - 1..*
  • 用户有很多问题 - 1..*

我想做的事情:

在 Yii 框架逻辑中:选择项目及其所有用户,这些用户必须只有所选项目的问题。

在表格逻辑中:选择特定项目用户的问题。

我想模仿什么sql代码:

SELECT Issue.i_name FROM Issue Join Project on Issue.i_id = Project.p_id Join User on 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;

最佳答案

要解决这个问题,您必须使用 through在你的 ralations 方法中。

项目模型关系方法应该是这样的:

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/>";
}

关于yii - 双连接选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16211257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com