у меня есть 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»
В вашей биомодели вы указываете те же отношения при запросе имени для разных наставников. Это должно быть как ниже:
public function getPreceptorID#Name() {
return $this->preceptorID#->name;
}
Этот способ запроса данных очень избыточен. Вы должны просто определить отношение и запросить имя в представлении, как $bio->preceptorID#->name
,
Других решений пока нет …