Guardar el Id como integer y mostrar el name en el Gridview

Hola amigos, estoy pegado en algo que tal vez sea simple.

Tengo un modelo que guarda el ingrediente y la unidad de medida que utiliza, por ejemplo azucar-gramos.

La unidad de medida la toma de otro modelo y guarda su id en la tabla ingredient:


<?php $measure = ArrayHelper::map(Measure::find()->all(), 'id', 'measure');


            echo $form->field($model, 'measure')->widget(Select2::classname(), [

                        'data' => $measure,

                        'language' => 'es',

                        'options' => ['placeholder' => Yii::t('app', 'Select ..')],

                        'pluginOptions' => [

                            'allowClear' => true

                        ],

                    ])->label(false); ?>

En el gridview del modelo Ingredient me muestra el id de la elección que es un int.

¿Como puedo mostrar el nombre en vez del id?

La idea es guardar el id en la tabla ingredient por eso uso: ‘id’, ‘measure’ en vez de: ‘measure’, ‘measure’.

Desde ya gracias por su ayuda.

Buen día domenor :)

En el ‘modelo’ debes tener las relaciones entre las dos tablas, las cuales te ayudaran a solucionar tu inconveniente, por ejemplo:

Yo tengo una relación donde una ‘publicación’ pertenece a una sola ‘categoría’, entonces en el modelo de la publicación hay esto:




    ...


    public function getIdCategoria()

    {

        return $this->hasOne(Categoria::className(), ['id_categoria' => 'id_categoria']);

    }


    ...



de ahí puedo deducir que la relación es "idCategoria", y para hacer referencia al nombre de la categoría a través de la vista de la publicación tan solo debo escribir "idCategoria.nombre_categoria" como lo ves en el código a continuación.




    'titulo_publicacion',


    'mensaje_publicacion:ntext',


    [

        'attribute' => 'id_categoria',

        'value' => 'idCategoria.nombre_categoria',

    ],



por facilidad, para el atributo utilicé el mismo nombre de la variable definida en el modelo ‘publicación’.

Espero te haya podido ayudar.