I tried everything I can google… but still cannot get my join column shown on gridview
What is the syntax to show a column of a joinWith query in GridView?
Model
public function getOwner()
{
return $this->hasOne(User::className(), ['id' => 'owner_id'])->viaTable('property_owner_map', ['property_id' => 'id']);
}
public function getRealties()
{
return $this->hasMany(Company::className(), ['id' => 'realty_id'])->viaTable('property_realty_assignment', ['property_id' => 'id']);
}
Controller
$dataProvider = new ActiveDataProvider([
'query' => Property::find()
->joinWith(['owner','realties'])
->where(['user.id'=>$id])
->select('property.*, company.name as realtyname')
]);
return $this->render('appindex', [
'dataProvider' => $dataProvider,
]);
View
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'name',
'type',
'realties.realtyname', <---- DONT WORK
['attribute' => 'Realty Name', 'value' => 'realties.realtyname'], <------ DON'T WORK
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
SQL
SELECT `property`.*, `company`.`name` AS `realtyname` FROM `property` LEFT JOIN `property_owner_map` ON `property`.`id` = `property_owner_map`.`property_id` LEFT JOIN `user` ON `property_owner_map`.`owner_id` = `user`.`id` LEFT JOIN `property_realty_assignment` ON `property`.`id` = `property_realty_assignment`.`property_id` LEFT JOIN `company` ON `property_realty_assignment`.`realty_id` = `company`.`id` WHERE `user`.`id`=27 LIMIT 20
I need to get "realties.realtyname" but it keep showing "not set". The SQL is returning results in the realtyname column.
Thanks for any help