2011-10-21 3 views
0

Yii에서는 조인의 테이블 열 이름에 제한이 있습니까?MANY_MANY의 관계에있는 다른 열 이름 매핑

두 테이블에 MANY_MANY 관계에 대한 조인 테이블이 있지만 열 이름이 불행히도 다르기 때문에 제한으로 인해 열 이름을 변경할 수 없습니다.

그래서 표에서 나는 PK 표 2에서

내가 가입 표, 표 3에서, 내가 가지고있는 PK 그런

하는 열 Table2ID이에게하는 열 table1_id이 2 열 Table1ID 및 Table2ID 표 1의 PK가 table1_id하지만 테이블에 가입되어

참고

Table1ID

내가 다른 이름으로 작업을 많은 관계로 많은 필요합니다. Invalid column name 'table1_id'

나는 데이터베이스에 열 이름을 변경할 수 없습니다 말했듯이 : 그래서 나는이 오류을 던지는 을 유지 표 AR 클래스

// 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)'); 
    } 
} 

에서이 관계 기능을 가지고있다.

답변

1

먼저이 예제에서 관계를 어떻게 호출하는지 모르겠습니다.

class Table2 extends CActiveRecord { 
    public function relations() { 
    return array('table1Relation'=>array(
     self::MANY_MANY, 'Table1', 'Table3(Table2ID, Table1ID)') 
    ); 
    } 
} 

가 그런 다음의 관계를 얻을 수 $myTable2Model->table1Relation 전화 : 당신은 너무 ( table1Relation)처럼, 내 생각, 관계의 이름을해야합니다. 그러나

오류 Table2, 또는 Table1Invalid column name 'table1_id'인가 ... 아마 당신은 코드의 일부를 입력 잊고 이미거야? 관계가 잘못된 테이블의 기본 키를 찾고있을 수 있습니다. 전체 오류 메시지를 표시하면 실제로 해결할 수 있습니다.

관계 테이블 선언 (즉, Table2ID, Table1ID 대신 Table1ID,Table2ID)의 순서를 전환하면됩니다. 이것을 시도하십시오 :

class Table2 extends CActiveRecord { 
    public function relations() { 
    return array('table1Relation'=>array(
     self::MANY_MANY, 'Table1', 'Table3(Table1ID,Table2ID)') 
    ); 
    } 
} 

약간의 도움이 되었기를 바랍니다. :) 행운을 빕니다!

+0

도움을 주셔서 감사합니다. – potsed