Version 6, last updated by phillipo at Sep 17 21:19 2007 UTC
31-1-como usar asociaciones
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
- ?>
