Otro Campo en GridView

Que tal amigos

Necisto colocar otro campo en GRidView (Yii 2) pero este campo quiero mostrar datos de otra consulta no se si se pueda hacer esto

<?= GridView::widget([

‘dataProvider’ => $dataProvider,

‘columns’ => [

         'codigo',


         'nombre',


         'Campo otra consulta',





   ],

]) ?>

Si pero tienes que tener la relación creada en el modelo, si ya la tienes solo poner:




  ...

  'nombre',

  'relacion.campo_consulta',

  ...



Una relación tipo hasOne sería algo así:




    public function getDato() {

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

    }         



Lo que necesito es lo siguiente

tengo una una consulta la cual es la principa la misma que vizualizo en el GridView




/*consulta de base de datos diferente a mysql*/


$sql="select * from tabla"

$count="select count(*) from tabla1";

$count = Yii::$app->basededatos1->createCommand($count)->queryScalar();

$dataProvider = new SqlDataProvider([

                'sql' => $sql,

                'db'=>'basededatos1',

                'totalCount' => $count,

                'pagination' => [

                   'pageSize' => 10,

                ],

            ]);

/*consulta base de datos mysql*/


$model= Estado::findOne(123)

$estado=$model->estado;


/*el valor de la variable $estado quiero mostran en el gridview*/


/*MUESTRO LOS DATOS EN EL GRID*/

echo GridView::widget([

        'dataProvider' => $dataProvider,

        //'filterModel' => $searchModel,

        'columns' => [

            ['class' => 'yii\grid\SerialColumn'],

                'val_asunto',

                'val_transporta',

                /*aqui mostrar la variable $estado*/


            

        ],

    ]);



Saludos

Esto ya es más complicado, yo necesito un modelo de la BD1, así si se puede acceder desde el gridview, mira la firma del value de datacolumn. Se puede acceder al modelo y hay podrías tener un método para calcular un valor.

Se que tienes un modelo de la BD de mysql pero la fuente de datos principal debería ser la que ponga el modelo en juego.

Otra posibilidad es un ArrayDataprovider pero te dará bastante trabajo, y no se me ocurre nada más.

Espero sirva de algo, saludos

una pregunta en que parte del controlador estas poniendo este codigo??? (porfa pon completo el codigo del controlador para poder darte una ayuda)


$sql="select * from tabla"

$count="select count(*) from tabla1";

$count = Yii::$app->basededatos1->createCommand($count)->queryScalar();

$dataProvider = new SqlDataProvider([

                'sql' => $sql,

                'db'=>'basededatos1',

                'totalCount' => $count,

                'pagination' => [

                   'pageSize' => 10,

                ],

            ]);

/*consulta base de datos mysql*/


$model= Estado::findOne(123)

$estado=$model->estado;

y en que vista estas poniendo este ?? (index,view,form …)




echo GridView::widget([

        'dataProvider' => $dataProvider,

        //'filterModel' => $searchModel,

        'columns' => [

            ['class' => 'yii\grid\SerialColumn'],

                'val_asunto',

                'val_transporta',

                /*aqui mostrar la variable $estado*/


            

        ],

    ]);



Este codigo va en el controlador




$sql="select * from tabla"

$count="select count(*) from tabla1";

$count = Yii::$app->basededatos1->createCommand($count)->queryScalar();

$dataProvider = new SqlDataProvider([

                'sql' => $sql,

                'db'=>'basededatos1',

                'totalCount' => $count,

                'pagination' => [

                   'pageSize' => 10,

                ],

            ]);



y lo demas va en la vista index