Revisión actual |
Tu texto |
Línea 1: |
Línea 1: |
− | {{cleanupbox
| |
− | |image=[[Archivo:Import.png|40px]]
| |
− | |texto ='''Este Artículo esta siendo revisado por los Kumbieros.'''<br />
| |
− | <span style="font-size:90%">El ejemplo presente es completamente funcional, pero su redacción debe mejorar</span>
| |
− | }}
| |
− |
| |
| 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> |
− | <?php
| |
| class Profesionales extends ActiveRecord | | class Profesionales extends ActiveRecord |
| { | | { |
Línea 66: |
Línea 59: |
| | | |
| <source lang=php> | | <source lang=php> |
− | <?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. |
| | | |
− | == Listar los Profesionales con su Especialidad == | + | ===En el controller=== |
− | | |
− | ===[ profesionales_controller.php ] === | |
− | | |
− | Tenemos que definir en el controlador el arreglo (variable $profesionales) que devuelve la operación en la base de datos.
| |
− | | |
| <source lang=php> | | <source lang=php> |
− | <?php
| + | ... |
− | | + | public function listar() |
− | Load::models('profesionales');
| |
− | | |
− | class ProfesionalesController extends AppController {
| |
− | public function listar() | |
| { | | { |
− | $profesional = new Profesionales();
| + | $this->profesionales = $this->Profesionales->find(); |
− | $this->profesionales = $profesional -> find(); //Obtenemos todos los profesionales
| |
− |
| |
| } | | } |
− | }
| + | ... |
− | ?>
| + | //los puntos (...) indican que hay una definicion de un controller |
| </source> | | </source> |
| | | |
− | === Obteniendo las Relación de Profesionales === | + | === Obteniendo las relaciones=== |
− | 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 objeto está la relación porque así fue definida, Un Profesional tiene una Especialidad. | + | 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. |
− | | |
− | === Vista [ listar.phtml ] ===
| |
| | | |
| <source lang=php> | | <source lang=php> |
− | <?php View::content()?>
| + | foreach ($profesionales as $profesional){ |
− | <br><br>
| + | echo $profesional->nombre; |
− | <div align="center">
| + | echo $profesional->Especialidades()->nombre;//imprime la relación |
− | <h5>Lista de Profesionales</h5><br>
| + | } |
− | <table border="1">
| |
− | <tr style="background-color: #c0c0c0;">
| |
− | <td>Profesional</td>
| |
− | <td>Especialidad</td>
| |
− | </tr>
| |
− | <?php foreach ($profesionales as $profesional) :?>
| |
− | <tr>
| |
− | <td><?php echo $profesional->apellido . ", " . $profesional->nombre ?></td>
| |
− | <td><?php echo $profesional->getEspecialidades()->nombre ?></td>
| |
− | </tr>
| |
− | <?php endforeach;?>
| |
− | </table>
| |
− | </div><br><br>
| |
− | </source>
| |
− | | |
− | === ¿Pero como se obtienen los datos de la Especialidad? ===
| |
− | | |
− | Pongamos nuestra atención en esta linea:
| |
− | <source lang=php>
| |
− | <td><?php echo $profesional->getEspecialidades()->nombre ?></td>
| |
− | </source>
| |
− | | |
− | De esta forma KumbiaPHP nos hace la conexión entre las dos tablas, solo tenemos que especificar getNombreDelModelo()->campo;
| |
− | | |
− | Si por ejemplo tuviéramos una relación adicional entre una tabla Facultades y la tabla Especialidades, podríamos obtener la facultad de cada profesional mediante:
| |
− | <source lang=php>
| |
− | <td><?php echo $profesional->getEspecialidades()->getFacultad()->nombreFacultad; ?></td>
| |
| </source> | | </source> |
− |
| |
− |
| |
− |
| |
− |
| |
− | === Screenshot de la Vista ===
| |
− | [[Archivo:Vista1_relacion_1_N_KumbiaPHP.jpg|center|Lista de profesionales con su Especialidad]]
| |
− |
| |
− | === Obteniendo las Relación de Especialidades ===
| |
| | | |
| [[Categoría:Tutoriales KumbiaPHP]] | | [[Categoría:Tutoriales KumbiaPHP]] |
− | 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.
| |
− |
| |
− | === Controlador para listar Profesionales por Especialidad ===
| |
− |
| |
− | ===[ profesionales_controller.php ] ===
| |
− |
| |
− | Se deben realizar las siguientes modificaciones al controlador.
| |
− |
| |
− | <source lang=php>
| |
− | <?php
| |
− |
| |
− | Load::models('especialidades');
| |
− |
| |
− | class ProfesionalesController extends AppController {
| |
− | public function listar()
| |
− | {
| |
− | $especialidad = new Especialidades();
| |
− | $this->especialidades = $especialidad -> find(); //Obtenemos todas las especialidades
| |
− |
| |
− | }
| |
− | }
| |
− | ?>
| |
− | </source>
| |
− |
| |
− | === En la Vista correspondiente ===
| |
− | <source lang=php>
| |
− | <?php View::content()?>
| |
− | <div align="center">
| |
− | <h5>Lista de Profesionales por Especialidad</h5><br>
| |
− | <table border="1">
| |
− | <?php foreach ($especialidades as $especialidad) :?>
| |
− | <tr><td colspan="2">Especialidad : <h5><?php echo $especialidad->nombre ?></h5><br></td></tr>
| |
− | <tr style="background-color: #c0c0c0;">
| |
− | <td>Profesional</td>
| |
− | <td>Telefono</td>
| |
− | </tr>
| |
− | <tr>
| |
− | <?php foreach ($especialidad->getProfesionales() as $profesional) : ?>
| |
− | <td><?php echo $profesional->apellido .", ".$profesional->nombre ?></td>
| |
− | <td><?php echo $profesional->telefono1 ?></td>
| |
− | </tr>
| |
− | <?php endforeach; ?>
| |
− | <?php endforeach;?>
| |
− | </table>
| |
− | </div>
| |
− | </source>
| |
− |
| |
− | === Screenshot de la vista ===
| |
− | [[Archivo:Vista2_relacion_1_N_KumbiaPHP.jpg|center|Lista de Especialidades con los Profesionales asociado]]
| |
− |
| |
− |
| |
− | '''Realizado Por: Adrián Murúa (adolphm)'''
| |
− | '''Modificado Por: Juan Felipe (JF)'''
| |