Edición de «Asociaciones»
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: | ||
− | |||
− | |||
Muchas aplicaciones trabajan con múltiples 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. | Muchas aplicaciones trabajan con múltiples 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. | ||
Línea 7: | Línea 5: | ||
Así que, sabiendo esto, quisiéramos que en vez de decir: | Así que, sabiendo esto, quisiéramos que en vez de decir: | ||
− | + | 1.$ciudad_id = $cliente->ciudad_id; | |
− | $ciudad_id = $cliente->ciudad_id; | + | 2.$ciudad = $Ciudad->find($ciudad_id); |
− | $ciudad = $Ciudad->find($ciudad_id); | + | 3.print $ciudad->nombre; |
− | |||
− | |||
mejor fuera: | mejor fuera: | ||
− | + | 1.print $cliente->getCiudad()->nombre; | |
− | |||
− | |||
− | Gran parte de la magia que tiene ActiveRecord es esto, ya que convierte las llaves foráneas en sentencias de alto nivel, fáciles de comprender y de trabajar. | + | Gran parte de la magia que tiene ActiveRecord es esto, ya que convierte las llaves foráneas en sentencias de alto nivel, fáciles de comprender y de trabajar. |
=Pertenece (belongs_to)= | =Pertenece (belongs_to)= | ||
Línea 29: | Línea 23: | ||
$relation (string): nombre de la relación. | $relation (string): nombre de la relación. | ||
− | + | Parámetros con nombre: | |
model: Nombre del tipo de modelo que debe retornar la consulta de la relación. Por defecto se considera un modelo que corresponda al nombre de la relación. Ejemplo: Si $relation='auto_volador', entonces model=AutoVolador | model: Nombre del tipo de modelo que debe retornar la consulta de la relación. Por defecto se considera un modelo que corresponda al nombre de la relación. Ejemplo: Si $relation='auto_volador', entonces model=AutoVolador | ||
Línea 35: | Línea 29: | ||
fk: nombre de la llave foránea mediante la cual se relaciona. Por defecto se considera el nombre de la relación con el sufijo “_id”. Ejemplo: Si $relation='auto_volador', entonces fk=auto_volador_id. | fk: nombre de la llave foránea mediante la cual se relaciona. Por defecto se considera el nombre de la relación con el sufijo “_id”. Ejemplo: Si $relation='auto_volador', entonces fk=auto_volador_id. | ||
− | + | Ejemplos de uso: | |
− | + | 1.$this->belongs_to('persona'); | |
− | $this->belongs_to('persona'); | + | 2.$this->belongs_to('vendedor', 'model: Persona') |
− | $this->belongs_to('vendedor', 'model: Persona') | + | 3.$this->belongs_to('funcionario', 'model: Persona', 'fk: personal_id') |
− | $this->belongs_to('funcionario', 'model: Persona', 'fk: | ||
− | |||
− | + | En el modelo Libro: | |
− | + | 1.class Libro extends ActiveRecord { | |
− | class Libro extends ActiveRecord { | + | 2. public function initialize() { |
− | + | 3. $this->belongs_to('persona'); | |
− | + | 4. } | |
− | + | 5.} | |
− | } | ||
− | |||
− | = | + | =Tienes un (has_one)= |
Este tipo de relación se efectúa con el método “has_one”, en esta la llave foránea se encuentra en la tabla del modelo con el que se quiere asociar. Corresponde a una relación uno a uno en el modelo entidad relación. | Este tipo de relación se efectúa con el método “has_one”, en esta la llave foránea se encuentra en la tabla del modelo con el que se quiere asociar. Corresponde a una relación uno a uno en el modelo entidad relación. | ||
Línea 61: | Línea 51: | ||
$relation (string): nombre de la relación. | $relation (string): nombre de la relación. | ||
− | + | Parámetros con nombre: | |
model: Nombre del tipo de modelo que debe retornar la consulta de la relación. Por defecto se considera un modelo que corresponda al nombre de la relación. Ejemplo: Si $relation='auto_volador', entonces model=AutoVolador | model: Nombre del tipo de modelo que debe retornar la consulta de la relación. Por defecto se considera un modelo que corresponda al nombre de la relación. Ejemplo: Si $relation='auto_volador', entonces model=AutoVolador | ||
Línea 67: | Línea 57: | ||
fk: nombre de la llave foránea mediante la cual se relaciona. Por defecto se considera el nombre de la relación con el sufijo “_id”. Ejemplo: Si $relation='auto_volador', entonces fk=auto_volador_id. | fk: nombre de la llave foránea mediante la cual se relaciona. Por defecto se considera el nombre de la relación con el sufijo “_id”. Ejemplo: Si $relation='auto_volador', entonces fk=auto_volador_id. | ||
− | ''' | + | Ejemplos de uso: |
+ | |||
+ | 1.$this->has_one('persona'); | ||
+ | 2.$this->has_one('vendedor', 'model: Persona') | ||
+ | 3.$this->has_one('funcionario', 'model: Persona', 'fk: personal_id') | ||
− | |||
− | |||
− | |||
− | |||
− | |||
En el modelo Persona: | En el modelo Persona: | ||
− | + | 1.class Persona extends ActiveRecord { | |
− | class Persona extends ActiveRecord { | + | 2. public function initialize() { |
− | + | 3. $this->has_one('datos_personales'); | |
− | + | 4. } | |
− | + | 5.} | |
− | } | ||
− | |||
=Tiene muchos (has_many)= | =Tiene muchos (has_many)= | ||
Línea 93: | Línea 80: | ||
$relation (string): nombre de la relación. | $relation (string): nombre de la relación. | ||
− | + | Parámetros con nombre: | |
model: Nombre del tipo de modelo que debe retornar la consulta de la relación. Por defecto se considera un modelo que corresponda al nombre de la relación. Ejemplo: Si $relation='auto_volador', entonces model=AutoVolador | model: Nombre del tipo de modelo que debe retornar la consulta de la relación. Por defecto se considera un modelo que corresponda al nombre de la relación. Ejemplo: Si $relation='auto_volador', entonces model=AutoVolador | ||
Línea 99: | Línea 86: | ||
fk: nombre de la llave foránea mediante la cual se relaciona. Por defecto se considera el nombre de la relación con el sufijo “_id”. Ejemplo: Si $relation='auto_volador', entonces fk=auto_volador_id. | fk: nombre de la llave foránea mediante la cual se relaciona. Por defecto se considera el nombre de la relación con el sufijo “_id”. Ejemplo: Si $relation='auto_volador', entonces fk=auto_volador_id. | ||
− | ''' | + | Ejemplos de uso: |
+ | |||
+ | 1.$this->has_many('persona'); | ||
+ | 2.$this->has_many('vendedor', 'model: Persona') | ||
+ | 3.$this->has_many('funcionario', 'model: Persona', 'fk: personal_id') | ||
− | |||
− | |||
− | |||
− | |||
− | |||
En el modelo Persona: | En el modelo Persona: | ||
− | + | 1.class Persona extends ActiveRecord { | |
− | class Persona extends ActiveRecord { | + | 2. public function initialize() { |
− | + | 3. $this->has_many('libro'); | |
− | + | 4. } | |
− | + | 5.} | |
− | } | ||
− | |||
=Tiene y pertenece a muchos (has_and_belongs_to_many)= | =Tiene y pertenece a muchos (has_and_belongs_to_many)= | ||
Línea 125: | Línea 109: | ||
$relation (string): nombre de la relación. | $relation (string): nombre de la relación. | ||
− | + | Parámetros con nombre: | |
model: Nombre del tipo de modelo que debe retornar la consulta de la relación. Por defecto se considera un modelo que corresponda al nombre de la relación. Ejemplo: Si $relation='auto_volador', entonces model=AutoVolador | model: Nombre del tipo de modelo que debe retornar la consulta de la relación. Por defecto se considera un modelo que corresponda al nombre de la relación. Ejemplo: Si $relation='auto_volador', entonces model=AutoVolador | ||
Línea 135: | Línea 119: | ||
through: tabla a través de la cual se establece la relación muchos a muchos. Por defecto se forma por el nombre de la tabla del modelo que tiene el nombre de tabla mas largo y como prefijo un “_” y el nombre de la tabla del otro modelo. | through: tabla a través de la cual se establece la relación muchos a muchos. Por defecto se forma por el nombre de la tabla del modelo que tiene el nombre de tabla mas largo y como prefijo un “_” y el nombre de la tabla del otro modelo. | ||
− | + | Ejemplos de uso: | |
− | + | 1.$this->has_and_belongs_to_many('persona'); | |
− | $this->has_and_belongs_to_many('persona'); | + | 2.$this->has_and_belongs_to_many('cargos', 'model: Cargo', 'fk: id_cargo', 'key: id_persona', 'through: cargo_persona'); |
− | $this->has_and_belongs_to_many('cargos', 'model: Cargo', 'fk: id_cargo', 'key: id_persona', 'through: cargo_persona'); | ||
− | |||
+ | En el modelo Persona: | ||
− | + | 1.class Persona extends ActiveRecord { | |
− | + | 2. public function initialize() { | |
− | + | 3. $this->has_and_belongs_to_many('cargo'); | |
− | class Persona extends ActiveRecord { | + | 4. } |
− | + | 5.} | |
− | |||
− | |||
− | } | ||
− |