Sei sulla pagina 1di 3

Captulo 8: Relaciones ORM Eloquent en Laravel 4

@jlinformatico
Hola estimados developers, en el anterior captulo hablamos sobre como implementar
nuestros modelos en nuestro primer proyecto Laravel 4, puedes verlo en el siguiente:
http://blog.devacademy.la/post/99105325421/tutorial-laravel-implementando-modelospor
En este tutorial vamos a utilizar las relaciones eloquent en Laravel 4, seguimos con
nuestro proyecto devacademy-laravel, emocionad@?!!, continuemos.
Introduccin a las relaciones
En los tutoriales anteriores hemos descubierto cmo representar las filas almacenadas
en nuestras tablas de la base de datos como objetos.
Dado que esos objetos ahora son simples, si fueramos a almacenar datos relacionados
con ellos, tendramos que crear nuevos objetos y formar relaciones entre ellos.
Vamos a tomar nuestro modelo Libro del anterior tutorial. Si pensamos en los libros por
un momento, llegaremos a la conclusin de que han tenido que ser escritos por alguien.
As que ahora sabemos que un Libro pertenece a un autor. Esa es nuestra primera
relacin. El autor tiene un enlace al libro. En cierta manera, el autor identifica al libro. No
es necesariamente una propiedad del libro, como su ttulo por ejemplo.
Un autor tiene su propio conjunto de propiedades; un nombre, un lugar de nacimiento,
un, vamos a declarar su propio modelo, una clase Autor.
Clase Autor

Bien, formemos una relacin entre ambas tablas. Es una relacin entre Libro y Autor,
ignoraremos co-autora por ahora y asumiremos que un libro solo puede tener un autor.
Vamos a aadir una nueva columna a la tabla Libros.
Clase Libros Relacin

Hemos aadido nuestra primera clave foranea. Esta es el campo autor_id. Una vez ms,

es un campo entero, pero no es usado para identificar filas en esta tabla, en vez de eso
es usada para identificar filas relacionadas en otra tabla. Una clave foranea se usa
normalmente para identificar una clave primaria en una tabla adyacente, no obstante, en
algunas circunstancias puede ser usada para identificar otros campos.
Relacin Autores y Libros

Vamos a definirle nombre a las relaciones cuando llegue la hora de implementar esos
tipos de relaciones con Eloquent :
Libro belongs_to Autor
Las relaciones tambin tienen sus variaciones inversas. Si un Libro pertenece a un Autor,
esto significa que un Autor tiene muchos Libros. Ahora hemos aprendido el nombre de
otra relacin.
Autor has_many Libro
Si el autor solo tuviera un nico libro, pero la tabla libros contiene la clave primaria,
usaramos la relacin tiene un / has_one.
Qu tal un sistema de favoritos? En el que un Usuario pueda votar un Libro. Vamos a
intentar expresarlo usando las relaciones que hemos descubierto.
Usuario has_many Libro
Libro has_many Usuario
La relacin has many (tiene muchos) es la relacin que expresa el favorito.
Cuando ambas relaciones y sus inversas son del tipo has_many tenemos que
implementar un nuevo tipo de relacin.
Primero, en vez de decir tiene muchos diremos que pertenece a muchos
(belongs_to_many). De esta forma no la confundiremos con la otra relacin. Este nuevo
tipo de relacin forma una relacin del tipo muchos a muchos y necesita una tabla
adicional.
Implementando

<?php
class Libro extends Eloquent
{
// Nombre del libro
public $nombre;
// Descripcin del libro
public $descripcion;
// Identificador autor
public $autor_id;
// Relacin
public function autor(){
return $this->belongsTo('Autor');
}
}

Saludos!

Potrebbero piacerti anche