Yii模型关系不起作用

时间:2016-03-28 07:29:22

标签: php yii2 yii2-advanced-app yii-relations

我有2个表,我必须在这两个之间关系

-------------------           -----------------
|    preceptor    |           |       bio     |
|-----------------|           |---------------|
| Preceptor_id    |           | bio_id        |
| Preceptor_name  |           | Preceptor_ID  |
| wat_id          |           | Preceptor_ID1 |
-------------------           | Preceptor_ID2 |
                              -----------------

在“生物”模型中我写得像这样

public function getPreceptor(){
    return $this->hasOne(Preceptor::className(),['Preceptor_id'=>'Preceptor_ID']);
}
public function getPreceptorName(){
    return $this->preceptor->Preceptor_name;
}

public function getPreceptorID1(){
    return $this->hasOne(Preceptor::className(),['Preceptor_id'=>'Preceptor_ID1']);
}
public function getPreceptorID1Name(){
    return $this->preceptor->Preceptor_name;
}

public function getPreceptorID2(){
    return $this->hasOne(Preceptor::className(),['Preceptor_id'=>'Preceptor_ID2']);
}
public function getPreceptorID2Name(){
    return $this->preceptor->Preceptor_name;
}

在“preceptor”模型中,我写得像这样

public function getBio(){
    return $this->hasOne(Bio::className(), ['Preceptor_ID' => 'Preceptor_id']);
}

public function getBios0(){
    return $this->hasOne(Bio::className(), ['Preceptor_ID1' => 'Preceptor_id']);
}

public function getBios1(){
    return $this->hasOne(Bio::className(), ['Preceptor_ID2' => 'Preceptor_id']);
}

但我的问题是,当我在生物视图中显示它时,它只在所有3个字段中显示“Preceptor_ID”值,那么我怎么能同时显示“Preceptor_ID1”和& “Preceptor_ID2”

1 个答案:

答案 0 :(得分:1)

在生物模型中,在为不同的指定者请求名称时指定相同的关系。它应该如下所示:

public function getPreceptorID#Name() {
    return $this->preceptorID#->name;
}

这种请求数据的方式非常多余。您应该只定义关系并在视图中请求名称$bio->preceptorID#->name