how to anchor the value of the relationship in the GridView

I am beginner. I explain the topic:

there is this relationship in the Ticket model:


public function getTyp()

{

    return $this->hasOne(Typology::className(), [ 'id' =>'typ_id']);

}

and in the ticket table there is the typ_id column (it is in relationship with the id of the Typology table). In the view views/ticket/index.php there is GridView::widgetwith these columns:


  [

     'attribute' => 'typ_id',

     'value' => 'typ.typology' 

  ],

I want to anchor the value of the relationship. I have tried this:


  [

     'attribute' => 'typ_id',

     'value' => function ($model) {

               return Html::a (

              'typ.typology',

              '/typology/view?id='.$model->typ_id

               );

      }

  ]

but it doesn’t work

someone can help me?

Hi, you should use $model variable, see bellow:


[

     'attribute' => 'typ_id',

     'value' => function ($model) {

               return Html::a (

              $model->typology,

              '/typology/view?id='.$model->typ_id

               );

      }

  ]

thanks

I had tried


[

     'attribute' => 'typ_id',

     'value' => function ($model) {

               return Html::a (

              $model->typology,

              '/typology/view?id='.$model->typ_id

               );

      }

  ]

but it doesn’t work, get error “Getting unknown property: app\models\Ticket::typology”.

I have tried this:


'value' => function ($model) {

    return Html::a (

    $model->typ,

   '/typology/view?id='.$model->typ_id

     );

}

but get error "Object of class app\models\Typology could not be converted to string".

any ideas?

you can use:


'value' => function ($model) {

    return Html::a (

    $model->typ->fieldname,

   '/typology/view?id='.$model->typ_id

     );

}

thanks it work fine!!! :)