Такой вопрос, необходимо вывести список пользователей с 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', что создает дополнительный запрос для каждой строки.