Отношение модели Yii не работает

у меня есть 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;
}

и в модели «наставник» я пишу так

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

Но моя проблема в том, что когда я показываю его в режиме био, он показывает только значение «Preceptor_ID» во всех 3 полях, так как я могу показать оба «Preceptor_ID1»? & «Preceptor_ID2»

-1

Решение

В вашей биомодели вы указываете те же отношения при запросе имени для разных наставников. Это должно быть как ниже:

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

Этот способ запроса данных очень избыточен. Вы должны просто определить отношение и запросить имя в представлении, как $bio->preceptorID#->name,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]