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:
{{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 ==
 
  
===[ profesionales_controller.php ] ===
 
  
Tenemos que definir en el controlador el arreglo (variable $profesionales) que devuelve la operación en la base de datos.
+
=== 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>
<?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 ===
 
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.
 
  
 
=== Vista [ listar.phtml ] ===
 
=== Vista [ listar.phtml ] ===
Línea 110: Línea 93:
 
<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->getEspecialidades()->nombre ?></td>
+
   <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>
 
=== ¿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>
 
 
 
 
  
 
=== Screenshot de la Vista ===
 
=== Screenshot de la Vista ===
[[Archivo:Vista1_relacion_1_N_KumbiaPHP.jpg|center|Lista de profesionales con su Especialidad]]
+
[[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.
  
=== Controlador para listar Profesionales por Especialidad ===
+
=== En el Controller [EspecialidadesController] ===
 
 
===[ profesionales_controller.php ] ===
 
 
 
Se deben realizar las siguientes modificaciones al controlador.
 
 
 
 
<source lang=php>
 
<source lang=php>
<?php
+
...
 
+
     public function listar(){
Load::models('especialidades');
+
     $this->especialidades = $this->Especialidades->find("condictions: activo=1");
 
 
class ProfesionalesController extends AppController {
 
     public function listar()  
 
    {
 
    $especialidad = new Especialidades();
 
     $this->especialidades = $especialidad -> find(); //Obtenemos todas las especialidades
 
   
 
 
     }
 
     }
}
+
...
?>
+
//los puntos (...) indican que hay una definicion de un controller
 
</source>
 
</source>
  
Línea 188: Línea 148:
 
</tr>
 
</tr>
 
<tr>
 
<tr>
   <?php foreach ($especialidad->getProfesionales() as $profesional) : ?>
+
   <?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 199: Línea 159:
  
 
=== Screenshot de la vista ===
 
=== Screenshot de la vista ===
[[Archivo:Vista2_relacion_1_N_KumbiaPHP.jpg|center|Lista de Especialidades con los Profesionales asociado]]
+
[[Archivo:vista_listar2.jpg]]
 
 
 
 
'''Realizado Por: Adrián Murúa (adolphm)'''
 
'''Modificado Por: Juan Felipe (JF)'''
 

Ten en cuenta que todas las contribuciones a KumbiaPHP Framework Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Proyecto:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)

Plantilla usada en esta página: