31 Asociaciones
History Key
- New content
Removed content
Recent Versions
Choose two versions to compare, or click the link to view it.
31. Asociaciones
Advertencia
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
- $ciudad_id = $cliente->ciudad_id;
- $ciudad = $Ciudad->find($ciudad_id);
- print $ciudad->nombre;
mejor fuera:
Sintaxis
- 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