31.1 ¿Como usar Asociaciones?
Primero que todo vamos a crear algunas tablas (PostgreSQL ó MySQL) para ilustrar mejor el ejemplo.
Tabla clientes
| Column |
Type |
Modifiers |
| id |
integer |
not null default nextval('clientes_id_seq') |
| nombre |
character varying(40) |
|
| telefono |
character varying(40) |
|
| direccion |
character varying(50) |
|
| modified_in |
date |
|
| fecha_at |
date |
|
| estado |
character(1) |
|
| Indexes:
|
| "clientes_pkey" PRIMARY KEY, btree (id) |
Tabla ciudad
| Column |
Type |
Modifiers |
| id |
integer |
not null default nextval('ciudad_id_seq') |
| nombre |
character varying(40) |
|
| Indexes:
|
| "clientes_pkey" PRIMARY KEY, btree (id) |
Una llave foránea implicita en clientes que es ciudad_id esta definida por convención de
ActiveRecord pero también puede agregarse un control de llave foránea a nivel de RBDM.
Ahora, creamos los modelos en nuestro proyecto en Kumbia:
Ejemplo
- ?php
-
- class Ciudad extends ActiveRecord {
-
- public function __construct(){
- $this->has_many('clientes');
- }
- }
-
- ?>
Ejemplo
- ?php
-
- class Clientes extends ActiveRecord {
- public function __construct(){
- $this->belongs_to('ciudad');
- }
- }
-
- ?>
Ahora veamos como funciona:
Ejemplo
- ?php
-
- class PruebaController extends ApplicationController {
-
- public function index(){
-
- # Busco el cliente con id = 3
- $this->Clientes->find(3);
-
- # Muestro el nombre de la ciudad que corresponde a ese cliente
- $this->render_text($this->Clientes->getCiudad()->nombre);
-
- # Busco la ciudad con id=2
- $this->Ciudad->find(2);
- # Ahora muestro todos los clientes que tenga esa ciudad
- foreach($this->Ciudad->getClientes() as $cliente){
- $this->render_text($cliente->nombre);
- }//fin foreach
-
- }//fin funcion index
-
- }//fin de la clase
-
- ?>
Regresar al indice