如果列名与两个表不同,如何添加模型关系?

时间:2016-02-05 01:09:01

标签: php yii

如果第一个表的主键有,则如何添加这两个表的关系 第二个表中的不同列名称将被引用

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

这不起作用...任何解决方案,而不必重命名数据库中的db列?

2 个答案:

答案 0 :(得分:1)

Person模型中的关系应如下所示:

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

因为Job表与humanid键的Person表相关(personid = humanid)。

如果Person和Job表有一对多的关系,你应该使用self :: HAS_MANY而不是self :: HAS_ONE('job'=> array(self :: HAS_MANY,'Job',' humanid'))。

正如яша所说,Job模型中的关系应如下所示:

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

答案 1 :(得分:1)

试试这个,

// JOB MODEL

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