Есть 3 таблицы:
Profile (id)
Skill-dictionary (id, skill)
Profile_skill (id, id_profile, id_skill)
Profile_skill связана с двумя другими таблицами внешними ключами
fk_profile-skill_profile - id_profile -> id в таблице profile
fk_profile-skill_skill – id_skill -> id в Skill-dictionary
Необходимо, во view profile вывести значение skill из Skill-dictionary (для соотв. id в profile).
В моделе Profile.php:
public function getProfileSkills()
{
return $this->hasMany(ProfileSkill::className(), ['id_profile' => 'id'])
->joinWith(['id ProfileSkill'])
->joinWith(['id SkillDictionary']);
}
В контроллере Profile:
public function actionIndex()
{
$dataProvider = new ActiveDataProvider([
'query' => Profile::find(),
]);
return $this->render('index', [
'dataProvider' => $dataProvider,
]);
}
Вы задавали этот вопрос вчера и вам дали на него ответ.
Потом вы задавали этот вопрос тут и вам тоже дали на него ответ.
Может перестанете плодить темы и почитаете офф документацию Yii2 ?
Могу предложить такой вариант:
1. в модели Profile_skill прописать две связи hasOne() с таблицами Skill и Profile. Например, для связи с Skill:
public function getNameSkill(){
return $this->hasOne(Skill::className(), ['id' => 'id_skill']);
} //Аналогично и для Profile
2. используйте жадную загрузку при выполнении запроса Profile::find(), просто сделав следующее: Profile::find()->with(). И далее, когда во вьюшке надо будет вывести название скилла, делаете так:
//внутри виджета GridView:
'columns' => [
...
[
'attribute' => 'id_skill',
'value' => function($data){
return $data->nameSkill->skill;
},
],
...
],
Надеюсь, Вам поможет этот ответ (:
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости