En YII Podemos definir en el modelo lo que es llaves foráneas, esta vez, no explicaré mucho el proceso, producto que, si está definido el modelo de la base de datos, Yii lo tomará automáticamente, por ejemplo, si trabajamos con MySQL y motor InnoDB, y creamos todas las relaciones necesarias, para finalmente crear el modelo con GII, podemos ver una función como la siguiente en el modelo.
Está vez, utilizaré un ejemplo de Empleado, Cliente y Atención, en donde en Atención, se guardará la atención que hace el empleado al cliente, por lo cual, está tiene las llaves foráneas de los ID tanto de empleado como cliente.
Como podemos ver, en el modelo, está la función relations(), aquí tenemos un array con elementos, en este caso, los elementos que nombra las relaciones son:
Estos son los que debemos utilizar en la vista, en este caso, haré un ejemplo de como hacerlo en la vista admin.
En la vista admin, encontraremos lo siguiente:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'idcliente0' => array(self::BELONGS_TO, 'Cliente', 'idcliente'),
'idempleados0' => array(self::BELONGS_TO, 'Empleados', 'idempleados'),
);
}
Está vez, utilizaré un ejemplo de Empleado, Cliente y Atención, en donde en Atención, se guardará la atención que hace el empleado al cliente, por lo cual, está tiene las llaves foráneas de los ID tanto de empleado como cliente.
Como podemos ver, en el modelo, está la función relations(), aquí tenemos un array con elementos, en este caso, los elementos que nombra las relaciones son:
- idcliente0
- idempleados0
Estos son los que debemos utilizar en la vista, en este caso, haré un ejemplo de como hacerlo en la vista admin.
En la vista admin, encontraremos lo siguiente:
widget('zii.widgets.grid.CGridView', array(
'id'=>'atencion-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'idatencion',
'hora',
'motivo',
'comentario',
'idcliente',
'idempleados',
array(
'class'=>'CButtonColumn',
),
),
));
?>
Por lo cual 'idcliente' y 'idempleados' lo debemos reemplazar y dejar de la siguiente forma:
widget('zii.widgets.grid.CGridView', array(
'id'=>'atencion-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'idatencion',
'hora',
'motivo',
'comentario',
array(
'name'=>'idcliente',
'value'=>'$data->idcliente0->nombres',
),
array(
'name'=>'idempleados',
'value'=>'$data->idempleados0->nombre',
),
array(
'class'=>'CButtonColumn',
),
),
));
?>;
Como podemos ver, eliminados lo necesario, y agregamos un array, el cual tiene el nombre, y valor. En valor indicamos
$data->NOMBRE-RELACION->CAMPO-A-MOSTRAR






















