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: | ||
− | = | + | =Introduccion= |
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 8: | Línea 8: | ||
<source lang=php> | <source lang=php> | ||
− | $ciudad_id = $cliente->ciudad_id; | + | 1.$ciudad_id = $cliente->ciudad_id; |
− | $ciudad = $Ciudad->find($ciudad_id); | + | 2.$ciudad = $Ciudad->find($ciudad_id); |
− | + | 3.print $ciudad->nombre; | |
</source> | </source> | ||
Línea 16: | Línea 16: | ||
<source lang=php> | <source lang=php> | ||
− | + | 1.print $cliente->getCiudad()->nombre; | |
</source> | </source> | ||
− | 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 38: | Línea 38: | ||
<source lang=php> | <source lang=php> | ||
− | $this->belongs_to('persona'); | + | 1.$this->belongs_to('persona'); |
− | $this->belongs_to('vendedor', 'model: Persona') | + | 2.$this->belongs_to('vendedor', 'model: Persona') |
− | $this->belongs_to('funcionario', 'model: Persona', 'fk: | + | 3.$this->belongs_to('funcionario', 'model: Persona', 'fk: personal_id') |
</source> | </source> | ||
Línea 46: | Línea 46: | ||
<source lang=php> | <source lang=php> | ||
− | class Libro extends ActiveRecord { | + | 1.class Libro extends ActiveRecord { |
− | + | 2. public function initialize() { | |
− | + | 3. $this->belongs_to('persona'); | |
− | + | 4. } | |
− | } | + | 5.} |
</source> | </source> | ||
− | = | + | =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 70: | Línea 70: | ||
<source lang=php> | <source lang=php> | ||
− | $this->has_one('persona'); | + | 1.$this->has_one('persona'); |
− | $this->has_one('vendedor', 'model: Persona') | + | 2.$this->has_one('vendedor', 'model: Persona') |
− | $this->has_one('funcionario', 'model: Persona', 'fk: personal_id') | + | 3.$this->has_one('funcionario', 'model: Persona', 'fk: personal_id') |
</source> | </source> | ||
Línea 78: | Línea 78: | ||
<source lang=php> | <source lang=php> | ||
− | class Persona extends ActiveRecord { | + | 1.class Persona extends ActiveRecord { |
− | + | 2. public function initialize() { | |
− | + | 3. $this->has_one('datos_personales'); | |
− | + | 4. } | |
− | } | + | 5.} |
</source> | </source> | ||
Línea 102: | Línea 102: | ||
<source lang=php> | <source lang=php> | ||
− | $this->has_many('persona'); | + | 1.$this->has_many('persona'); |
− | $this->has_many('vendedor', 'model: Persona') | + | 2.$this->has_many('vendedor', 'model: Persona') |
− | $this->has_many('funcionario', 'model: Persona', 'fk: personal_id') | + | 3.$this->has_many('funcionario', 'model: Persona', 'fk: personal_id') |
</source> | </source> | ||
Línea 110: | Línea 110: | ||
<source lang=php> | <source lang=php> | ||
− | class Persona extends ActiveRecord { | + | 1.class Persona extends ActiveRecord { |
− | + | 2. public function initialize() { | |
− | + | 3. $this->has_many('libro'); | |
− | + | 4. } | |
− | } | + | 5.} |
</source> | </source> | ||
Línea 137: | Línea 137: | ||
'''Ejemplos de uso:''' | '''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:''' | '''En el modelo Persona:''' | ||
<source lang=php> | <source lang=php> | ||
− | class Persona extends ActiveRecord { | + | 1.class Persona extends ActiveRecord { |
− | + | 2. public function initialize() { | |
− | + | 3. $this->has_and_belongs_to_many('cargo'); | |
− | + | 4. } | |
− | } | + | 5.} |
</source> | </source> |