在Yii2中,使用viaTable有许多关系,如何包含列名?

在Yii2中,使用viaTable有许多关系,如何包含列名?,yii2,Yii2,在我的示例中,我有一个模型User。用户有许多组织。一个组织有许多用户 为了清楚起见,我在本例中使用了一些稍微不寻常的列名 user表具有主键列user\u a organization表具有主键列organization\u a 我们还有一个名为user\u organization的联接表,其中包含一个主键(此处不相关)加上user\u b和organization\u b列 如何使用getorganizationsahasMany和viaTable在Yii2中创建用户与其组织之间的关系 g

在我的示例中,我有一个模型
User
用户有许多组织。一个
组织
有许多用户

为了清楚起见,我在本例中使用了一些稍微不寻常的列名

user
表具有主键列
user\u a
organization
表具有主键列
organization\u a

我们还有一个名为
user\u organization
的联接表,其中包含一个主键(此处不相关)加上
user\u b
organization\u b

如何使用
getorganizations
a
hasMany
viaTable
在Yii2中创建用户与其组织之间的关系

getorganizations()公共职能
{
返回$this->hasMany(Organization::className(),['column\u a'=>'column\u b']))
->viaTable('用户组织',['列c'=>'列d']);
} 

我应该用什么来替换
列a
列b
列c
列d

当您在Yii2中创建一个更简单的关系时,您可以从以下内容开始

在这里,我们有一个单一组织的用户。
user
表中有一列
organization\u b
organization
表中有一列
organization\u a

在我们的关系中,我们使用组织列
organization\u a
定义这些列,然后是用户表列
organization\u b

getorganization()公共职能
{
返回$this->hasOne(organization::className(),['organization\u a'=>'organization\u b']);
}
如果我们有一个
关系,那么定义列的方式会有一些变化。我们也需要考虑链接表。

我们的关系定义中的
有许多部分现在包含链接表
用户组织
组织
表的关系。第一列应定义
组织
表中存在的内容。对我们来说,这就是组织。第二列是组织的
用户组织
表中的相关列。对我们来说,这就是组织

新的
viaTable
部分关系现在将
个人
表链接到链接表
用户组织
。第一列应定义
用户组织
表中存在的内容。对我们来说,这就是
user\u b
。第二列是
user
表中的相关列。对我们来说,这是
user\u b

getorganizations()公共职能
{
return$this->hasMany(organization::className(),['organization\u a'=>'organization\u b']
->viaTable('user_Organization',['user_b'=>'user_a']);
} 

在更多的标准示例中,您可能会使用大量
id
列名来代替我们在这里使用的不太标准的示例。

这一点解释得很好(而且我更清楚)在文档中:缺少明显的列命名和映射的文档中的一个明显的例子,或者在任何其他地方我都可以发现是诚实的,这正是我创建这个问题的原因。如果您认为文档不清楚,您可以考虑用改进来打开PR。但是我认为像
'user\u b'=>'user\u a'
这样的映射示例比
'order\u id'=>'id'
更令人困惑。感谢您的反馈