В Yii2 вывести данные из трех таблиц

226
05 августа 2018, 17:10

Есть 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_skillid_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,
        ]);
    }
Answer 1

Вы задавали этот вопрос вчера и вам дали на него ответ.

Потом вы задавали этот вопрос тут и вам тоже дали на него ответ.

Может перестанете плодить темы и почитаете офф документацию Yii2 ?

Answer 2

Могу предложить такой вариант: 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;
        },
    ],
...
],

Надеюсь, Вам поможет этот ответ (:

READ ALSO
Работа с Telegram API

Работа с Telegram API

Можно ли как-то получить список подписчиков у публичных телеграм каналов? Всё что на данный момент нашел - getchatmemberscount, но там требуется chat_id,...

173
форма для поиска в sql базе

форма для поиска в sql базе

Интересует вот какая тема, можно ли и есди да то как реализовать поиск по базе с переменной в sql запросе так чтобы использовать только один...

152
Авторизация через сесиию

Авторизация через сесиию

Помогите внести ясность в простом вопросе, изучаю php, не могу понять одну простую вещь с переходом по адресу в теге action

172