@Cyberjs

Yii2 как по ключевому полю взять данные из другой таблицы?

Есть 2 таблицы, таблица студентов и таблица групп, таблица студентов и таблица групп имеют 2 одинаковых поля Group_Code, т.е в таблице студентов у каждого студента есть Group_Code, и в таблице Student есть Group_Code и Group_Name, Из таблицы студентов я вывожу данные с помощью foreach

Контроллер
public function actionIndex()
    {

        $list = Students::find()
            ->select([' 'FIO','Group_Code'])
            ->orderBy('FIO')
            ->asArray()
            ->all();


Вид

<?php foreach ($list as $student): ?>
    <table>
        <thead>
        <tr>
            <th>ФИО</th> <br>
            <th>Название группы</th><br>
        </tr>
        </thead>
        <td>
        <td>
            <td> <?=  $student['FIO']; ?></td>
            <td> <?=  $student['Group_Code'] ?>
        </tr>
        </tbody>
    </table>
        <?php endforeach; ?>


Тут у меня выводится Group_Code просто код группы типа 230, есть таблица Group где хранятся все эти группы и есть этот же код 230 но из таблицы Group надо вывести Group_Name по коду группы, помогите не могу уже час всякие варианты перепробовал.
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
v3shin
@v3shin
Веб-шаман
В классе Student настройте связь:
public function getGroup()
{
    return $this->hasOne(Group::className(), ['Group_Code' => 'Group_Code']);
}

В выборку добавьте эту связь:
$list = Students::find()
    ->select(['FIO','Group_Code'])
    ->with(['group'])
    ->orderBy('FIO')
    ->asArray()
    ->all();

И сможете обращаться к группе:
$student['group']['Group_Name']
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы