@Ann2016

Yii2 relations and GridView?

Такой вопрос, необходимо вывести список пользователей с email и ФИО в GridView с минимальным количеством запросов. Email в user, ФИО в profile.

В User я добавила связь такого вида
public function getProfile()
    {
        return $this->hasOne(Profile::className(), ['user_id' => 'id']);
    }

В profile
public function getUser()
    {
        return $this->hasOne(User::className(), ['id' => 'user_id']);
    }


CREATE TABLE `profile` (
`id_prof` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
`surname` varchar(32) NOT NULL,
`patronymic` varchar(32) NOT NULL,
`user_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id_prof`),
KEY `idx_user_id` (`user_id`),
CONSTRAINT `fk_user_profile_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8

Уже всеми запросами старалась сформировать модели для dataProvider, но ночего не выходит. Выводит данные только если задать 'profile.name', что создает дополнительный запрос для каждой строки.
  • Вопрос задан
  • 489 просмотров
Решения вопроса 2
kimono
@kimono
Web developer
В поисковой модели делаете запрос с ->with(profile)
А в гриде используете $model->profile->fio
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы