Version 8, last updated by phillipo at Sep 17 22:08 2007 UTC

31. Asociaciones

Advertencia: Esta funcionalidad solo esta disponible a partir de kumbia-0.4.4 beta3 y las asociaciones muchos a muchos no estan soportadas.

Muchas aplicaciones trabajan con multiples tablas en una base de datos y normalmente hay

relaciones entre esas tablas. Por ejemplo, una ciudad puede ser el hogar de muchos clientes pero un cliente solo tiene una ciudad. En un esquema de base de datos, estas relaciones son enlazadas mediante el uso de llaves primarias y foráneas.

Como ActiveRecord trabaja con la convención: La llave foránea tiene el nombre de la tabla y termina en id, asi: ciudad_id, esto es una relación a la tabla ciudad a su llave primaria id. Asi que sabiendo esto, quisieramos que en vez de decir:

Sintaxis

  1. $ciudad_id = $cliente->ciudad_id;
  2. $ciudad = $Ciudad->find($ciudad_id);
  3. print $ciudad->nombre;

mejor fuera:

Sintaxis

  1. print $cliente->getCiudad()->nombre;

Gran parte de la magia que tiene ActiveRecord es esto, ya que convierte las llaves foraneas

en sentencias de alto nivel, fáciles de comprender y de trabajar. ActiveRecord (inspirado en Rails), permite manejar estas asociaciones mediante los métodos has_one, has_many y belongs_to, que basicamente especifican relaciones para los casos:

  • Un registro en una tabla A esta asociado con cero o mas registros en la tabla B
  • Un registro en una tabla A esta asociado con un numero arbitrario de registros en la fila B



Regresar al indice