2016-02-05 63 views
1

如何添加與這兩個表的關係如果第一表的主鍵具有 在所述第二表中的不同的列名它被在上面的例子稱爲如果列名與兩個表不同,如何添加模型關係?

e.g 

Person 
personid(pk),fname,lname,age 

Job 
jobid(pk),humanid(fk),description 

,在humanid列的值工作表是第一張表中的personid .. 那麼如何在這兩張表中創建關係?

我試圖

//PERSON MODEL 
    public function relations() { 
     return array(
      'job' => array(self::HAS_ONE,'Job','jobid') 
     ); 
    } 




//JOB MODEL 
    public function relations(){ 
     return array(
      'person' => array(self::BELONGS_TO,'Person','personid') 
     ); 
    } 

這不工作...任何解決方案,而不必在我的數據庫重命名該數據庫列?

+0

'人'=>陣列(self :: BELONGS_TO,'Person','humanid')? –

+0

根據文檔http://www.yiiframework.com/doc/guide/1.1/en/database,您的建議無效 – sasori

+0

'VarName'=>數組('RelationType','ClassName','ForeignKey')。 arr –

回答

1

在Person模型的關係應該是這樣的:

//PERSON MODEL 
public function relations() { 
    return array(
     'job' => array(self::HAS_ONE,'Job','humanid') 
    ); 
} 

因爲工作表是關係到Person表的humanid鍵(PERSONID = humanid)。如果Person和Job表具有一對多關係,則應該使用self :: HAS_MANY而不是self :: HAS_ONE('job'=> array(self :: HAS_MANY,'Job',' humanid'))。

而作爲яша說,在工作模式之間的關係應該是這樣的:

//JOB MODEL 
public function relations(){ 
    return array(
     'person' => array(self::BELONGS_TO,'Person','humanid') 
    ); 
} 
1

試試這個,

// JOB模式

public function relations(){ 
    return array(
     'person' => array(self::HAS_ONE,'Person',array('personid'=>'humanid') 
    ); 
} 
相關問題