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 61: Línea 54:
 
         $this->belongs_to('especialidades');
 
         $this->belongs_to('especialidades');
 
     }
 
     }
 +
    public function getEspecialidades( $estado = 1 ){
 +
        //Devuelve una consulta de acuerdo al estado dado
 +
        $this->especialidades = $this->Especialidades->find("condictions: activo=" . $estado);
 +
    }
 
}
 
}
 
</source>
 
</source>
Línea 66: Línea 63:
  
 
<source lang=php>
 
<source lang=php>
<?php
 
 
class Especialidades extends ActiveRecord
 
class Especialidades extends ActiveRecord
 
{
 
{
Línea 75: Línea 71:
 
         $this->has_many('profesionales');
 
         $this->has_many('profesionales');
 
     }
 
     }
 +
    public function getProfesionales( $estado = 1 ){
 +
        //Devuelve una consulta de acuerdo al estado dado
 +
        $this->profesionales = $this->Profesionales->find("condictions: activo=" . $estado);
 +
    }
 
}
 
}
 
</source>
 
</source>
Línea 81: Línea 81:
 
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.
 
  
<source lang=php>
 
<?php
 
  
Load::models('profesionales');
+
=== 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.
  
class ProfesionalesController extends AppController {
 
    public function listar()
 
    {
 
    $profesional = new Profesionales();
 
    $this->profesionales = $profesional -> find(); //Obtenemos todos los profesionales
 
   
 
    }
 
}
 
?>
 
</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 121: Línea 103:
 
<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->getEspecialidades('1')->nombre ?></td>
 
</tr>   
 
</tr>   
 
<?php endforeach;?>
 
<?php endforeach;?>
Línea 127: Línea 109:
 
</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 ===
Línea 153: Línea 118:
 
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 ===
 
 
===[ 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 ===
 
=== En la Vista correspondiente ===
Línea 188: Línea 133:
 
</tr>
 
</tr>
 
<tr>
 
<tr>
   <?php foreach ($especialidad->getProfesionales() as $profesional) : ?>
+
   <?php foreach ($especialidad->getProfesionales('1') 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 203: Línea 148:
  
 
'''Realizado Por: Adrián Murúa (adolphm)'''
 
'''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: