Вы находитесь на странице: 1из 87

Laravel

PROYECTO BASICO EN LARAVEL

CONTEXTO DEL
PROYECTO
Se va a realizar una biblioteca virtual, se manejan
libros, autores, categoras, de momento la
entrada es libre por lo que no se requiere un
sistema de autentificacin.
Se tiene pensado que sea un sistema Web basado
en PHP para la conexin con la BD que ser
MySQL, tomando en cuenta las tecnologas que
imperan hoy en da se decidi utilizar el
framework Laravel que es alagado por su
potencia y facilidad de uso.

INSTALACIN DE LARAVEL

Instalamos nuestro servidor web


y MySQL con un paquete
integrado como Xampp.

Levantamos servicios de
apache y mysql
Ante
Ante
ss

Despu
Despu
s
s

Configurar archivo de host


contenido en
C:\Windows\System32\drivers\
etc para dar de alta el nombre
de dominio.

Configurar servidor
apache para que acepte
host virtuales
RUTA

ARCHIVO

Ubicamos las siguientes


lneas y las des
comentamos.

Agregamos el dominio
virtual en el archivo de
virtual host
ARCHIVO

AGREGAD
O

URL

Instalamos composer

Establecemos ruta de
php, en este caso en
XAMPP

Pulsamos install

Instalamos composer en
nuestro proyecto
composer install

Levantamos el servidor
artisan
php artisan serve

Revisamos desde nuestro


navegador que Laravel 4
ya este funcionando.

BASICO

ESTRUCTURA

/app
/app/config Aqu se pueden se pueden encontrar todos los
archivos de configuracin de la aplicacin. Base datos,
cache, correos, sesiones o cualquier otra configuracin
general de la aplicacin.
/app/controller Contiene todos los archivos con las clases
de los controladores que sirven para interactuar con
los modelos, las vistas y manejar la lgica de la aplicacin.
/app/model Los modelos son clases que representan la
informacin (datos) de la aplicacin y las reglas para
manipularlos. En la mayora de los casos cada tabla de la
base datos esta representada con un modelo.
/app/views Este directorio contiene las plantillas de HTML
que usan los controladores para mostrar la informacin. Hay
que tener en cuenta que en esta carpeta no van los
Javascript, CSS o imgenes, ese tipo de archivos van
alojados en la carpeta/public.

/public
/public En ella se encuentra elindex.php. En
este directorio tambin se alojan los archivos CSS,
Javascript, imgenes y otros archivos que se
quieran hacer pblicos.

/vendor
En esta carpeta se alojan todas las libreras que
conforman el framework y sus dependencias.

/lang
En esta carpeta se guardan archivos PHP que
contienen los diferentes lenguajes, en caso que se
desee que la aplicacin se pueda traducir.

BASICO TOMANDO EN CUENTA QUE EL


GESTOR DE BD ES MYSQL

BASE DE DATOS

Diseo SQL
libros

ID
NOMBRE
GENERO
CONTENIDO
URL_IMG
URL_LIB

autores

BD:
biblioteca

autore_libro
ID
LIBRO_ID
AUTORE_ID

ID
NOMBRE
APELLIDOS

CREAMOS BD EN
NUESTRO GESTOR.

En esta seccin configuramos la conexin


entre la base de datos y la aplicacin.

CONFIGURACIN DE LA BD EN
LARAVEL

Con la BD creada
editamos el
archivo:/app/config/datab
ase.php

En este punto se define la estructura de la


base de datos para la aplicacin laravel.

1) MIGRACIONES

Creamos una migracin

Creamos las tablas de la


BD

Tabla autore_libro que


guarda la relacin con
autores y libros

Elaboramos los esquemas


de borrado de tablas.

Cargamos la migracin a
la base de datos.

Revisamos nuestra BD
para ver si las tablas se
crearon correctamente.

Para llamar al mtodo


Down de la migracin

En esta seccin se crean modelos para el trabajo con la BD


desde la aplicacin, los modelos nos permiten representar
las tablas mediante clases en php que despus se
instanciaran en objetos lo que permitir la manipulacin de
la base de datos desde la aplicacin.
Es aqu donde definiremos las RELACIONES ENTRE LAS
DIFERENTES TABLAS que componen la base de datos.

2) MODELOS

Antes de continuar con la creacin de


modelos de la base de datos veamos un poco
de teora sobre las relaciones uno a uno, uno
a muchos y muchos a muchos en laravel.

TEORA RELACIONES EN LARAVEL

Sin relacin con otra tabla


<?php

class Libro extends Eloquent {


protected $table = libros';
}
?php>

Uno a Uno
Supongamos para nuestro caso que cada libro nicamente tiene un
autor.
Primero declaramos la relacin en el modelo que tiene algo, en este caso
un libro tiene un autor

Class Libro extends Eloquent{

public function autor(){


return $this->hasOne(Autor', 'id');
// Para declarar una relacin uno a uno se utiliza la funcin hasOne().
// Esta funcin recibe como primer parmetro el modelo con el cual
queremos hacer la relacin
// en este caso es Autor.
// El segundo parmetro es el campo id con el cual se relaciona el
modelo Autor en este caso id del modelo libro.
// En este caso Eloquent busca el autor que tenga id igual al id de la tabla libro.

Uno a Uno
Una vez que definimos el modelo que tiene algo en este caso
libro, el segundo paso ser definir el modelo que pertenece a
algo en este caso autor.

Class Autore extends Eloquent {


public function libro()
{
return $this->belongsTo(Libro', libro_id');
// La relacin Pertenece a se declara con la funcin belongsTo
// esta acepta dos parmetros
// El primero es la tabla a donde pertenece la relacin
// El segundo es el id de la tabla padre en la tabla actual, es
decir en este caso el campo que guarda el id de libro en la tabla
autores.
}

Uno a Uno
La forma de realizar una bsqueda de informacin
con esta relacin se muestra a continuacin:
$libro = Libro::find(1); //libro es un objeto de la
clase libro y contiene toda la informacin del libro
con id 1.
$autor = $libro->autor;
$autor contendr un objeto con toda la
informacin del autor del libro con id 1.

Uno a Muchos
Vamos a suponer que un libro puede tener muchos autores
(relacin uno a muchos), al igual que en el caso anterior
definimos el modelo que tiene muchos
Class Libro extends Eloquent{

public function autores(){


return $this->hasMany(Autor', 'id');
// Para declarar una relacin uno a muchos se hace uso de
la funcin hasMany().
// Al igual que hasOne, esta funcin recibe dos
parmetros.
// El primero es el modelo al cual se desea asociar
// El segundo es el id con el que se van a relacionar los
modelos, en este caso el id de libro.
}

Uno a muchos
Para realizar una bsqueda en este modelo:
$libro = Libro::find(1); //realizamos una busqueda
en el modelo libro del libro con id 1.
$autores = $libro->autores;
// Esto retorna un arreglo con los objetos de todas
los autores que tiene relacin con el libro 1

$temas_obligatorios = $asignatura->temas()>where('obligatorio', '=', '1')->get();


// Tambin se pueden agregar filtros, en este caso solo retorna
los temas en los que en el campo obligatorio sea igual a 1

Uno a Muchos
La forma de definir el modelo pertenece a es igual que en la
relacin uno a uno, veamos nuevamente solo para recordarlo.

Class Autore extends Eloquent {


public function libro()
{
return $this->belongsTo(Libro', libro_id');
// La relacin Pertenece a se declara con la funcin
belongsTo
// esta acepta dos parmetros
// El primero es la tabla a donde pertenece la relacin
// El segundo es el id de la tabla padre en la tabla actual, es
decir en este caso el campo que guarda el id de libro en la tabla
autores.
}

Muchos a Muchos
Para este ejemplo vamos a basarnos en nuestra base
de datos sql, tenemos 3 tablas libros, autores,
libro_autor.

Class Libro extends Eloquent{

public function autores(){


return $this->belongsToMany(Autor',
autor_libro', libro_id', autor_id');
}
}

Muchos a Muchos
Class Autore extends Eloquent{

public function libros(){


return $this>belongsToMany(Libro',
autor_libro', 'autor_id', libro_id');
}
}

Muchos a Muchos
En este caso hemos declarado la relacin de
los dos lados, para muchos a muchos se
utiliza la funcinbelongsToManyque recibe
4 parametros:
El primero es el otro modelo con el cual se
quiere hacer relacin.
El segundo es la tabla que contiene los ids
de los dos modelos y hace la unin.
El tercer y cuarto parmetro son los
nombres de los id que Laravel debe buscar
en la tabla intermedia para hacer la
relacin.

Muchos a Muchos
Uso de la relacin:

$autores = Libro::find(1)->autores;
// $autores va a contener un arreglo con todos
los autores que tiene el libro 1

$Libros = Autores::find(1)->Libros;
// $Libros va a contener un arreglo con todas
los libros que escribi el autor 1

Muchos a Muchos
INSERTAR DATOS:
$libro = Libro::find(1);
$libro->autores()->attach(5);
// Aqu estamos guardando en $libro la informacin
del libro numero 1
// luego mediante la relacin autores() llamamos a
la funcin attach()
// esta funcin recibe como parmetro el id del
autor que se relaciona con el libro 1

Muchos a Muchos
$libro = Libro::find(1);
$libro->autores()->detach(5);
// para borrar una relacin se utiliza la funcin
detach()
// en este caso borrara la relacin que tiene el libro
1
// con el autor 5

Aqu explicamos la forma de trabajo con el


modelo eloquent para interactuar con la base
de datos.

TRABAJO CON ELOQUENT

Almacenar informacin

Buscar todo los registros


de una tabla

Buscar un registro

Modificar un registro

Eliminar un registro

Eliminar varios registros al


mismo tiempo

Ahora si pasamos a realizar los modelos de la


base de datos de nuestra aplicacin.

MODELOS

Creamos el archivo del


modelo libro

Elaboramos el modelo
dentro del archivo
libro.php

Creamos el archivo del


modelo autore

Elaboramos el modelo
dentro de autore.php

Definimos la relacin en
el modelo libro

Definimos la relacin en
el modelo autore

En esta seccin se va a comprobar el correcto


funcionamiento de nuestros modelos e
introducimos un nuevo tema que es el
Routing o manejo de rutas, a travs del cual
vamos a poder acceder a las diversas partes
de nuestro proyecto.

PRUEBA DE MODELOS

Routing bsico

Creamos rutas para probar


nuestros modelos abriendo el
archivo routes.php

Creacin de la ruta para


insertar un registro en la tabla
libro

Estado actual de la base


de datos

Insertamos la ruta en el
navegador

Revisamos el estado de la
BD

nuevo registro
modificando la
informacin de nuestra
ruta

Ejecutamos la ruta y
verificamos la BD

Creamos ruta para insertar


registro de autor con relacin al
libro prueba 1

Ejecutando ruta y
Comprobando en la BD

Vamos a asignar a este autor


el libro 2 para lo cual
definimos una nueva ruta

Revisando BD tenemos que


las relaciones fueron
insertadas correctamente

Definiendo nuevo autor


sin relacin

Вам также может понравиться