Код: Выделить всё
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
[
'attribute' => 'userType',
'value' => 'userType.Name',
'filter' => false,
],
'username',
],
]); ?>
У пользователя есть тип (userType). Если в параметр query класса ActiveDataProvider присваивать
Код: Выделить всё
User::find()
Код: Выделить всё
SELECT COUNT(*) FROM `user`
SELECT * FROM `user` LIMIT 20
SELECT * FROM `usertypes` WHERE `UserTypeId`=1
SELECT * FROM `usertypes` WHERE `UserTypeId`=1
SELECT * FROM `usertypes` WHERE `UserTypeId`=2
Код: Выделить всё
$query = User::find()->joinWith('userType');
Код: Выделить всё
SELECT COUNT(*) FROM `user` LEFT JOIN `usertypes` ON `user`.`UserTypeId` = `usertypes`.`UserTypeId`
SELECT `user`.* FROM `user` LEFT JOIN `usertypes` ON `user`.`UserTypeId` = `usertypes`.`UserTypeId` LIMIT 20
SELECT * FROM `usertypes` WHERE `UserTypeId` IN (1, 2)
Вопрос: могу ли я как-то повлиять на ленивую/жадную загрузку так, чтобы выборка была не через звездочку '*', а с указанными мною полями? Ибо если таблица большая, то делать выборку всех полей не совсем корректно.