Many to many 映射多个上关系中的不同列名
在Yii中,联接的表列名是否有限制 你看,我有两个表加上一个多-多关系的联接表,但不幸的是,它们的列名都不同,由于限制,我无法更改列名以匹配 所以在表1中,我有一列Table1_id,它是PK 在表2中,我有一列Table2ID,它是PK 然后在联接表Table3中,我有两列Table1ID和Table2ID 请注意,Table1的PK是Table1_id,但联接表使用Table1ID 我需要多对多的关系来处理不同的名字。在Table1ar类中有这个关系函数Many to many 映射多个上关系中的不同列名,many-to-many,yii,Many To Many,Yii,在Yii中,联接的表列名是否有限制 你看,我有两个表加上一个多-多关系的联接表,但不幸的是,它们的列名都不同,由于限制,我无法更改列名以匹配 所以在表1中,我有一列Table1_id,它是PK 在表2中,我有一列Table2ID,它是PK 然后在联接表Table3中,我有两列Table1ID和Table2ID 请注意,Table1的PK是Table1_id,但联接表使用Table1ID 我需要多对多的关系来处理不同的名字。在Table1ar类中有这个关系函数 // Table 1 column
// Table 1 column name is table1_id, but join table has it as Table1ID
class Table1 extends CActiveRecord {
public function relations() {
return array(self::MANY_MANY, 'Table2', 'Table3(Table1ID, Table2ID)');
}
}
class Table2 extends CActiveRecord {
public function relations() {
return array(self::MANY_MANY, 'Table1', 'Table3(Table2ID, Table1ID)');
}
}
这会引发错误:无效的列名“table1\u id”
正如我前面所说的,不可能更改数据库中的列名。首先,我不确定您是如何从这个示例中调用关系的。我认为,您需要这样命名关系(
table1Relation
):
然后调用$myTable2Model->table1Relation
获取关系。但也许你忘了键入那部分代码,并且已经在这样做了
是表2
或表1
上的错误无效列名“table1\u id”
?关系可能在错误的表中查找主键。如果您可以显示整个错误消息,这可能会对解决此问题有很大帮助
您可能只需要切换关系表声明的顺序(即Table1ID,Table2ID
,而不是Table2ID,Table1ID
)。试试这个:
class Table2 extends CActiveRecord {
public function relations() {
return array('table1Relation'=>array(
self::MANY_MANY, 'Table1', 'Table3(Table1ID,Table2ID)')
);
}
}
我希望这有点帮助。:)祝你好运
class Table2 extends CActiveRecord {
public function relations() {
return array('table1Relation'=>array(
self::MANY_MANY, 'Table1', 'Table3(Table1ID,Table2ID)')
);
}
}