Indice
Contenido
GLOSARIO ............................................................................................................................................ 3
CREACIÓN DE PROYECTO LARAVEL ..................................................................................................... 4
BARRA DE CONSULTAS .................................................................................................................... 5
CONFIGURACIÓN BÁSICA ................................................................................................................ 7
MODELOS ............................................................................................................................................ 8
RELACIONES ........................................................................................................................................ 9
MIGRACIONES ................................................................................................................................... 11
TABLAS RELACIONADAS ................................................................................................................ 19
MODELOS .......................................................................................................................................... 19
CONFIGURACIÓN DE TABLAS ............................................................................................................ 20
CREACIÓN DE FACTORIES .................................................................................................................. 26
DATABASE SEEDER ........................................................................................................................ 30
CONCLUSIÓN ..................................................................................................................................... 35
GLOSARIO
Factory: Una software factory, en palabras simples, es como una línea de montaje de ideas y
tecnología, diseñada para crear programas y aplicaciones que ayudan al funcionamiento de una
compañía.
Seeder: Los seeders te permiten definir datos de prueba en código y ejecutarlos de manera
automatizada, lo que facilita el proceso de llenado de datos en la base de datos. En este capítulo,
te enseñaremos cómo crear y ejecutar seeders en Laravel, cómo definir datos de prueba y cómo
utilizar las relaciones Eloquent para crear datos de prueba relacionados.
Migrate: Se refiere a la transferencia de datos entre diferentes tipos de formatos de archivos,
esquemas de bases de datos y sistemas de almacenamiento. Sin embargo, la "transferencia" de
datos no es el único aspecto de la metodología.
Artisan: Es la interfaz de línea de comandos incluida con Laravel para emitir ciertos comandos en el
proyecto. Muchos de estos comandos son útiles en las distintas fases del ciclo de desarrollo de una
aplicación Laravel, otros también pueden usarse durante la fase de setup o actualización de la
aplicación.
.env: Este archivo almacena pares clave-valor que la aplicación puede cargar automáticamente al
iniciarse. Estos valores se pueden acceder dentro del código de la aplicación y utilizarse para
configurar aspectos específicos de la misma, como la conexión a la base de datos, el nivel de
depuración y otras características.
Eloquent: Es el ORM integrado de en Laravel, el cual permite interactuar con la base de datos de
una manera más sencilla y elegante.
CREACIÓN DE PROYECTO LARAVEL
Primero crearemos nuestro proyecto en laravel, para eso necesitamos entrar a la carpeta de
htdocs en xampp
Imagen 0.1 carpeta htdocs
Ahora escribiremos cmd en la ruta de la carpeta para crear un proyecto
Imagen 0.2 cmd
Escribiremos la siguiente línea de comando en el cmd para la creación de un proyecto
Imagen 0.3 create project
Tambien podemos crear un proyecto con la siguiente línea de código
Imagen 0.4 create Project 2
Ahora nos iremos a la rura de nuestro proyecto
Imagen 0.5 go Project
BARRA DE CONSULTAS
Ahora necesitamos una barra para poder ver las consultas que hago en su momento, para eso
necesito poner la siguiente línea de código
Imagen 0.6 install debugbar
Ahora nos iremos a nuestro editor de texto y abriremos el proyecto que hemos creado
database_app
Imagen 0.7 abrir proyecto
CONFIGURACIÓN BÁSICA
Ahora nos iremos a la carpeta de config y al archivo de [Link]. En la parte de providers
agregaremos la siguiente línea de código
Imagen 0.8 providers
También agregaremos la siguiente línea de código en aliases
Imagen 0.9 aliases
Ahora pegaremos la siguiente línea de código con la terminal
Imagen 1.0 provider terminal
Nos podremos dar cuenta que en nuestro servidor ya tenemos la siguiente barra para ver las
consultas
Imagen 1.1 debugbar laravel
Crearemos una nueva base de datos que se llame relaciones
Imagen 1.2 crear relaciones
Ahora en nuestro archivo .env referenciaremos a nuestra base de datos relaciones (en dado caso
de que no la hayamos creado, necesitamos crearla)
Imagen 1.3 relacionar db relaciones
Ahora escribiremos la siguiente línea de código en la terminal para hacer las migraciones
Imagen 1.4 migraciones
Nos daremos cuenta que se migraron todas las tablas que tenemos por defecto
Imagen 1.5 tablas default
MODELOS
Ahora crearemos un nuevo modelo llamado Profile con migraciones y factories, para eso
escribiremos la siguiente línea de código en la terminal
Imagen 1.6 model Profile
Nos daremos cuenta que se creó la nueva tabla junto con sus factories
Imagen 1.7 tabla Profile
RELACIONES
Ahora escribiremos el siguiente código en el modelo de [Link] ya que queremos que se
relacione con un perfil
Imagen 1.8 user hasOne Profile
Ahora configuraremos la tabla de profiles de la siguiente manera
Imagen 1.9 tabla providers
Volveremos a poner el siguiente comando para las migraciones
Imagen 2.0 migrate
Nos daremos cuenta de que las relaciones de las tablas están correctamente hechas
Imagen 2.1 relación users-profile
Ahora crearemos otro migration y factory de Level, para ello reutilizaremos la línea anteriormente
expuesta
Imagen 2.2 crear modelo nivel
De nuevo pondremos el siguiente código pero para crear una migración con la finalidad de que
level esté por delante de users
Imagen 2.3 crear migración nivel
MIGRACIONES
Copiaremos el siguiente código en la nueva tabla creada de level
Imagen 2.4 tabla 2 level
Ahora podremos migrar de nuevo con el comando php artisan migrate (un nivel tiene muchos
usuarios, y un usuario tiene un perfil)
Imagen 2.5 migrate add level at users
Ahora ya tendremos las tablas relacionadas de la siguiente manera
Imagen 2.6 tablas relación
Ahora pondremos el código siguiente en [Link] referenciando que un nivel tiene muchos
usuarios
Imagen 2.7 un nivel tiene muchos usuarios
Pegaremos el siguiente código en [Link] donde indicamos que un nivel pertenece a nivel para
saber el nivel al que pertenezco a través del usuario
Imagen 2.8 pertenece a
Crearemos un nuevo modelo llamado Group
Imagen 2.9 modelo group
Ahora crearemos una tabla intermedia (group-user) para guardar ambos id, es decir que por
ejemplo (el usuario 1 pertenece al grupo 1)
Imagen 3.0 group-user table
Escribiremos el siguiente código en la tabla de grupos para saber cuál es el nombre de cierto grupo
Imagen 3.1 nombre de grupos
Pondremos el siguiente código en la tabla intermedia de grupos
Imagen 3.2 grupos intermedia
Ejecutaremos el comando de migración y nos damos cuenta de que se creó la tabla de grupos y la
tabla intermedia correctamente
Imagen 3.3 grupos, grupos intermedia migración
Con eso tendremos las tablas relacionadas de la siguiente manera
Imagen 3.4 relación tablas
Pondremos el siguiente código en [Link] para poder decir que un usario pertenece a un grupo
pero también tiene muchos grupos (ponemos). Withtamestamps quiere decir que con fechas
Imagen 3.5 un usuario pertenece a muchos grupos
Copiamos y pegamos el mismo código pero para [Link] para decir que un grupo tiene
muchos usuarios, (por eso ponemos users en plural)
Imagen 3.6 un grupo pertenece a muchos grupos
AHORA TRABAJAREMOS UN POCO CON EL DISEÑO
Borraremos el siguiente if de la parte del código del archivo [Link]
Luego escribiremos el código siguiente en el [Link]
Imagen 3.7 reemplazar código [Link]
Ahora tendremos que entrar al [Link] y referenciar la vista welcome de la siguiente manera
Imagen 3.8 [Link]
Finalmente si queremos abrir el servidor nos mostrará algo así
Imagen 3.9 eloquent relaciones vista
Ahora haremos el modelo Location
Imagen 4.0 modelo location
Ahora escribiremos lo siguiente en la tabla que se nos acaba de crear de location
Imagen 4.1 tabla location
Ahora ejecutamos el comando de migración
Tabla 4.2 migrar datos location
Las relaciones de las tablas quedarían de la siguiente manera
TABLAS RELACIONADAS
MODELOS
Ahora escribiremos la siguiente parte del código del modelo User
Ahora pondremos el siguiente código en el modelo Profile
Creamos los siguientes modelos en la terminal
Imagen 4.3 crear modelos
Ahora creamos una tabla sin identidad ni factory para el tema de las etiquetas, es decir, crear
correctamente su relación
Imagen 4.4 migrar taggables
CONFIGURACIÓN DE TABLAS
Ahora agregaré el siguiente código en la tabla de categories
Imagen 4.5 tabla categorias
Hacemos lo mismo para la tabla posts
Imagen 4.6 tabla post
Lo mismo haremos para la tabla videos
Imagen 4.7 tabla videos
Lo siguiente será para la tabla comments
imagen 4.8 tabla comentarios
El siguiente es para imágenes
Imagen 4.9 tabla imágenes
Ahora pondremos lo siguiente para la tabla tags
imagen 5.0 tabla tags
Ahora lo siguiente para la tabla intermedia de tag
Imagen 5.1 tabla taggables
Volveremos a migrar
Imagen 5.2 migrar tablas
Pondremos lo siguiente en category
Imagen 5.3 modelo categoría relacionado
Así queda del lado de Posts
Imagen 5.4 relaciones modelo Post
El modelo videos queda de la siguiente manera
Imagen 5.5 relaciones modelo video
Así queda el modelo tag
Imagen 5.6 relaciones modelo tag
Modelo image
imagen 5.7 crear relaciones imágenes
Así quedan los comentarios
Imagen 5.8 relaciones modelo comentario
Modelo level
imagen 5.9 relaciones modelo nivel
Modelo user
Imagen 6.0 relaciones modelo user
CREACIÓN DE FACTORIES
Nos iremos a [Link] y pondremos el siguiente código para poder crear cierto
numero de datos
Imagen 6.1 databaseSeeder
Escribiremos el siguiente código en GroupFactory
Imagen 6.2 groupfactory
Lo siguiente para categoryfactory
Imagen 6.3 categoryFactory
Así quedan los [Link]
Imagen 6.4 commentFactory
Así queda [Link]
imagen 6.5 imageFactory
En este caso dejaremos Level como está
Lo siguiente es para location
Imagen 6.6 locationFactory
Lo siguiente es para Post
imagen 6.7 postFactory
[Link] queda de la siguiente manera
Imagen 6.8 profileFactory
Así queda [Link]
Imagen 6.9 tagFactory
Así queda el modelo User
imagen 7.0 modelo user
Por último el modelo Video queda de la siguiente manera
Imagen 7.1 videoFactory
DATABASE SEEDER
Modificamos el databaseSeeder de la siguiente manera finalmente
Imagen 7.2 databaseSeeder conf
Por último agregaremos la siguiente parte de código
Imagen 7.3 databaseSeeder agregar
Por último el DatabaseSeeder queda de la siguiente manera
Imagen 7.4 databaseSeeder final
Finalmente pondremos la siguiente línea de código en la terminal
Imagen 7.5 migraciones finales
Y nuestra base de datos por último queda así
Imagen 7.6 tablas finales
CONCLUSIÓN
En esta práctica pude observar muchas cosas desde la creación de modelos y tablas hasta la
resolución de problemas probablemente generados por el orden de la creación de las tablas.
Incluso las factories fueron algo muy interesante ya que insertan datos de manera aleatoria pero
también sigue las reglas que le das. Al principio la verdad la práctica se me hizo fácil hasta la parte
donde empezamos a relacionar todas las clases, por ejemplo para algunas tablas se relacionaba un
id con otra entidad de otra tabla pero si tenía un mínimo error como una s de más en users en vez
de user y solo tenía que tener relación de uno a uno, pues me daba error y probablemente la
creación de las tablas no iban a ser correctas. Algo que definitivamente me ayudó bastante fue el
inglés para comprender qué hacía cada una de las relaciones, pues ya que si lo interpretas bien, es
fácil de entender e implementar