Buenas, he creado una vista ampliada en donde puedo consultar información sobre la matricula de un alumno concreto.
En esta vista, he puesto un gridview con los registros de otro modelo llamado pagos. En este grid, cargo los pagos que ha realizado un alumno en el curso actual.
He creado un sqldataprovider y se lo paso a la vista matriculas/view con el alumno_id y curso_id.
Controller Matriculas
public function actionView($alumno_id, $curso_id)
{
$count = Yii::$app->db->createCommand('SELECT COUNT(*) FROM pagos WHERE persona=:persona AND curso=:curso_id', [':persona' => $alumno_id,':curso_id'=>$curso_id])->queryScalar();
$dataProvider = new SqlDataProvider([
'sql' => 'SELECT * FROM pagos WHERE persona=:persona AND curso=:curso_id',
'params' =>[':persona' => $alumno_id,':curso_id'=>$curso_id],
'totalCount' => $count,
'sort' => [
'attributes' => [
'id'
],
],
'pagination' => [
'pageSize' => 20,
],
]);
return $this->render('view', [
'model' => $this->findModel($alumno_id, $curso_id),'pagos'=>$dataProvider
]);
}
Ahora en la vista matriculas/view inicializo el grid de esta manera:
<?php
echo GridView::widget([
'dataProvider' => $pagos,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'concepto',
'importe',
'forma_pago',
'notas',
]]);
?>
Mi duda es la siguiente, como podreís observar tengo un campo en la tabla pagos que se llama ‘forma_pago’, este campo es una FK de la tabla fpagos. He estado intentando mostrar el nombre de la forma de pago, en vez de la FK para ello, he ido al modelo pagos y he buscado la relación.
//Modelo Pagos
public function getFormaPago()
{
return $this->hasOne(Fpago::className(), ['id' => 'forma_pago']);
}
he probado a poner ‘FormaPago.nombre’ en el grid pero no muestra nada.
¿Alguna idea?