Edición de «Como Crear Relacion 1:N KumbiaPHP Framework»
De KumbiaPHP Framework Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.
Revisión actual | Tu texto | ||
Línea 1: | Línea 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
En este ejemplo se explica como se realizan asociaciones sobre nuestro modelos haciendo uso de las '''Relaciones de ActiveRecord'''. | En este ejemplo se explica como se realizan asociaciones sobre nuestro modelos haciendo uso de las '''Relaciones de ActiveRecord'''. | ||
Línea 52: | Línea 46: | ||
<source lang=php> | <source lang=php> | ||
− | |||
class Profesionales extends ActiveRecord | class Profesionales extends ActiveRecord | ||
{ | { | ||
Línea 66: | Línea 59: | ||
<source lang=php> | <source lang=php> | ||
− | |||
class Especialidades extends ActiveRecord | class Especialidades extends ActiveRecord | ||
{ | { | ||
Línea 81: | Línea 73: | ||
Suponiendo que necesitamos crear una lista de los profesionales guardados en la tabla profesionales con sus respectivas especialidades. | Suponiendo que necesitamos crear una lista de los profesionales guardados en la tabla profesionales con sus respectivas especialidades. | ||
− | |||
− | |||
− | + | === Obteniendo las Relación de Profesionales=== | |
+ | Para obtener la relación de un profesional obviamente hay que recorrer el array que devolvió el método [[Consultas#find | find()]] pero internamente en cada objecto esta la relación porque así fue definida, Un Profesional tiene una Especialidad. | ||
+ | === En el Controller [ProfesionalesController] === | ||
<source lang=php> | <source lang=php> | ||
− | + | ... | |
− | + | public function listar() | |
− | |||
− | |||
− | |||
− | public function listar() | ||
{ | { | ||
− | + | $this->profesionales = $this->Profesionales->find(); | |
− | |||
− | |||
} | } | ||
− | + | ... | |
− | + | //los puntos (...) indican que hay una definicion de un controller | |
</source> | </source> | ||
− | === | + | === Vista [ Metodo listar() ] === |
− | |||
− | |||
− | |||
<source lang=php> | <source lang=php> | ||
<?php View::content()?> | <?php View::content()?> | ||
+ | </source><br> | ||
+ | <source lang=html4strict> | ||
<br><br> | <br><br> | ||
<div align="center"> | <div align="center"> | ||
Línea 118: | Línea 103: | ||
<td>Especialidad</td> | <td>Especialidad</td> | ||
</tr> | </tr> | ||
+ | </source><br> | ||
+ | <source lang=php> | ||
<?php foreach ($profesionales as $profesional) :?> | <?php foreach ($profesionales as $profesional) :?> | ||
<tr> | <tr> | ||
<td><?php echo $profesional->apellido . ", " . $profesional->nombre ?></td> | <td><?php echo $profesional->apellido . ", " . $profesional->nombre ?></td> | ||
− | <td><?php echo $profesional-> | + | <td><?php echo $profesional->Especialidades()->nombre ?></td> |
</tr> | </tr> | ||
<?php endforeach;?> | <?php endforeach;?> | ||
+ | </source><br> | ||
+ | <source lang=html4strict> | ||
</table> | </table> | ||
</div><br><br> | </div><br><br> | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Screenshot de la Vista === | === Screenshot de la Vista === | ||
− | [[Archivo: | + | [[Archivo:vista_listar.jpg]] |
=== Obteniendo las Relación de Especialidades === | === Obteniendo las Relación de Especialidades === | ||
Línea 153: | Línea 125: | ||
Para obtener la relación de las Especialidades, se debe obtener la lista de especialidades y luego, por cada una de las especialidades, agrupar los profesionales que tienen esa especialidad. | Para obtener la relación de las Especialidades, se debe obtener la lista de especialidades y luego, por cada una de las especialidades, agrupar los profesionales que tienen esa especialidad. | ||
− | === | + | === En el Controller [EspecialidadesController] === |
− | |||
− | |||
− | |||
− | |||
− | |||
<source lang=php> | <source lang=php> | ||
− | + | ... | |
− | + | public function listar(){ | |
− | + | $this->especialidades = $this->Especialidades->find("condictions: activo=1"); | |
− | |||
− | |||
− | public function listar() | ||
− | |||
− | |||
− | $this->especialidades = $ | ||
− | |||
} | } | ||
− | + | ... | |
− | + | //los puntos (...) indican que hay una definicion de un controller | |
</source> | </source> | ||
Línea 178: | Línea 138: | ||
<source lang=php> | <source lang=php> | ||
<?php View::content()?> | <?php View::content()?> | ||
+ | </source><br> | ||
+ | <source lang=html4strict> | ||
<div align="center"> | <div align="center"> | ||
<h5>Lista de Profesionales por Especialidad</h5><br> | <h5>Lista de Profesionales por Especialidad</h5><br> | ||
<table border="1"> | <table border="1"> | ||
+ | </source><br> | ||
+ | <source lang=php> | ||
<?php foreach ($especialidades as $especialidad) :?> | <?php foreach ($especialidades as $especialidad) :?> | ||
<tr><td colspan="2">Especialidad : <h5><?php echo $especialidad->nombre ?></h5><br></td></tr> | <tr><td colspan="2">Especialidad : <h5><?php echo $especialidad->nombre ?></h5><br></td></tr> | ||
+ | </source><br> | ||
+ | <source lang=html4strict> | ||
<tr style="background-color: #c0c0c0;"> | <tr style="background-color: #c0c0c0;"> | ||
<td>Profesional</td> | <td>Profesional</td> | ||
<td>Telefono</td> | <td>Telefono</td> | ||
</tr> | </tr> | ||
+ | </source><br> | ||
+ | <source lang=php> | ||
<tr> | <tr> | ||
− | <?php foreach ($especialidad-> | + | <?php foreach ($especialidad->Profesionales() as $profesional) : ?> |
<td><?php echo $profesional->apellido .", ".$profesional->nombre ?></td> | <td><?php echo $profesional->apellido .", ".$profesional->nombre ?></td> | ||
<td><?php echo $profesional->telefono1 ?></td> | <td><?php echo $profesional->telefono1 ?></td> | ||
Línea 194: | Línea 162: | ||
<?php endforeach; ?> | <?php endforeach; ?> | ||
<?php endforeach;?> | <?php endforeach;?> | ||
+ | </source><br> | ||
+ | <source lang=html4strict> | ||
</table> | </table> | ||
</div> | </div> | ||
+ | |||
</source> | </source> | ||
=== Screenshot de la vista === | === Screenshot de la vista === | ||
− | [[Archivo: | + | [[Archivo:vista_listar2.jpg]] |
− | |||
− | |||
− | |||
− |