Curso para crear tus aplicaciones con Laravel y MongoDB
Curso en Legacy (No tendrá más actualizaciones)
MongoDB
MongoDB es una base de datos NoSQL de alto rendimiento y escalable. A diferencia de las bases de datos relacionales , en MongoDB los datos se almacenan en documentos JSON, los cuales se pueden anidar. Gracias a los JSONs podemos tener un esquema flexibilidad para anidar y modelar los datos.
MongoDB es compatible con muchas herramientas, lo cual es ideal ya que, podemos usarlo junto con nuestros desarrollos; por ejemplo, podemos usarlo con lenguajes de programación como PHP, Python, Java y Node.js.
Gracias a la integración con PHP, podemos usarlo en un proyecto en Laravel.
En resumen , MongoDB es una poderosa base de datos NoSQL, que ofrece una gran flexibilidad en el modelado de los datos y características de alta disponibilidad y escalabilidad.
Laravel
De Laravel no voy a hablarte mucho, ya que, si estas tomando este curso, significa que ya tienes conocimientos en Laravel al menos de manera básica; Laravel es un exelente framework con el cual podemos desarrollar todo tipo de proyectos webs; tenemos funcionalidades que nos facilitan mucho la vida con la integración de otras tecnologías facilmente, como por ejemplo Stripe.
Laravel con Mongo DB
Usar Laravel y MongoDB, es posible gracias a que existe un conector de PHP para la mencionada base de datos NoSQL; de esta manera, se tiene una interfaz para interactuar con MongoDB en Laravel. Además, se puede usar Eloquent para modelar y realizar consultas a las colecciones de MongoDB; para esto, existe un paquete para Laravel que es el que usamos en el curso; gracias a este paquete, se puede realizar consultas a la colección de MongoDB usando la sintaxis de consulta de Eloquent de manera directa; así que, en buena medida la integración de Laravel y MongoDB es transparente.
En resumen, trabajar con Laravel y MongoDB implica configurar la conexión a la base de datos, crear modelos para las colecciones, y realizar consultas utilizando la sintaxis de consulta de Eloquent o de MongoDB; todas estas operaciones las vemos en el curso en detalle, mostrando como realizar los procesos CRUDs adaptados a MongoDB.
A la final, la integración de Mongo en Laravel consiste en dotar a Eloquent de poder aceptar las consultas, realizarlas en Mongo y poder convertirlas a objetos y arrays en PHP.
Planificación del curso
En el curso vamos a preparar primero el ecosistema de MongoDB y su integración con Laravel (vamos a emplear un entorno Windows con Laragon pero perfectamente puedes emplear otro Sistema Operativo).
- Aprender a conectarnos a MongoDB y realizar consultas básicas tipo CRUD mediante el cliente de la terminal.
- Crear un proyecto Laravel y configurar el mismo con MongoDB; instalar TODO lo necesario para que Laravel pueda trabajar con MongoDB.
- Hacer un sencillo CRUD en Laravel con MongoDB para aplicar lo aprendido.
- Trabajar con las relaciones de uno a uno, uno a muchos y muchos a muchos en MongoDB
- Trabajar con las relaciones de uno a uno, uno a muchos y muchos a muchos en Laravel con MongoDB.
- También vamos a hacer integración con el uso de las funciones de Agregación y Proyecciones en MongoDB y su potencial uso en Laravel.
Además de varios desarrollos interesantes que se irán agregando al curso y para eso siéntete libre de ver las introducciones a cada sección del curso para saber exactamente qué es lo que vamos a hacer.
Por lo tanto, esto es un curso básico, -en el cual tienes que tener conocimiento en Laravel- en el cual aprenderemos a integrar MongoDB con Laravel y poder emplear la totalidad del framework y sus funcionalidades básicas con este motor de base de datos NoSQL
Recuerda que puedes ver las introducciones de todas las secciones de manera gratuita aquí en Udemy, para que sepas exactamente qué vamos a abordar en cada sección.
Requisito del curso
Para tomar este curso es fundamental que tienes que conocer cómo desarrollar tus aplicaciones en Laravel, ya que todo el desarrollo que iremos haciendo desde este framework NO será de caracteres introductivo y no nos pararemos demasiado en explicar elementos o funcionalidades que son básicas del framework, ya que el objetivo del curso es aprender más que las bases en MongoDB y cómo podemos emplear todo esto mediante Laravel y por supuesto emplear dicha conección de la manera más eficiente.
- Este curso tiene el objetivo de enseñar los elemento básicos y no tan básicos de MongoDB; conoceremos su estructura o cómo está compuesto el mismo, como preparar todo el entorno, instalar el mismo y por supuesto realizar nuestras primeras consultas CRUD con MongoDB; aprenderemos el mismo tomando como base el esquema relacional -por ejemplo- con MySQL.
- El curso es progresivo, iremos de a poco, aprendiendo los elementos básicos en MongoDB mediante el cliente que podemos ejecutar mediante la terminal y replicando lo aprendido con MongoDB y su cliente en el ambiente Laravel; iremos creando en el proceso una pequeña aplicación funcional tipo CRUD e iremos agregando desarrollos y funcionalidades interesantes en cuando su implementación que correspondan con los visto con anterioridad nativamente en MongoDB
Acepto recibir anuncios de interes sobre este Blog.
Curso para crear tus aplicaciones con Laravel y MongoDB; crea CRUDs, entiende las relaciones y operaciones básicas entre ambas tecnologías.
- Andrés Cruz
Por aquí tienes el listado completo de clases que vamos a cubrir en el libro y curso:
Introducción
-
1 Introducción
-
2 Sobre el curso
-
3 Estructura del curso
-
4 Requisitos para tomar el curso
Preparar el entorno de desarrollo
-
1 Instalar MongoDB en Windows con Laragon
Vamos a instalar MongoDB en Windows empleando Laragon.
-
2 Agregar la extensión (DLL) de MongoDB a PHP en Windows/Laragon
Vamos a agregar el DLL para PHP para poder emplear MongoDB con PHP.
-
3 Actualizar MongoDB Windows con Laragon
Vamos a aprender a variar una versión de mongoDB a otra versión.
-
4 Instalar MongoDB en MacOS
Vamos a instalar MongoDB en MacOS.
-
5 Agregar la extensión (DLL) de MongoDB a PHP en general
Vamos a agregar el DLL para PHP para poder emplear MongoDB con PHP.
-
6 Crear el proyecto en Laravel 7
Vamos a crear un proyecto en Laravel que más adelante vamos a vincular con MongoDB.
-
7 Agregar dependencia para trabajar con MongoDB
Vamos a agregar la dependencia en Laravel para poder trabajar con MongoDB.
-
8 Opcional: Instalar MongoDB en Windows (Sin Laragon)
Opcional: Instalar MongoDB en Windows (Sin Laragon)
Primeros pasos con MongoDB: Operaciones CRUD
-
1 Documentación a emplear y pasos a seguir
Vamos a hablar sobre algunos parámetros que tienes que tener en cuenta para poder seguir en esta sección.
-
2 Conociendo MongoDB
Vamos a aprender algunos conceptos básicos para trabajar con MongoDB.
-
3 Trabajando con las colecciones
Vamos a trabajar con las colecciones/tablas en MongoDB.
-
4 Métodos -insert- para crear documentos/registros
Vamos a conocer cómo podemos insertar documentos en MongoDB.
-
5 Método -find- para buscar documentos/registros y findOne
Vamos a conocer cómo podemos buscar documentos en MongoDB.
-
6 Generación del ID
Generación del ID
-
7 Método -find- con parámetros de búsqueda (query) y campos (proyección)
Vamos a conocer como podemos insertar documentos en MongoDB y personalizar algunas opciones.
-
8 Método -update- para actualizar documentos
Vamos a conocer cómo podemos actualizar documentos en MongoDB.
-
9 Método -delete- para eliminar documentos
Vamos a conocer cómo podemos eliminar documentos en MongoDB.
-
10 Consultas CRUD a realizar
Consultas CRUD a realizar
Primeros pasos con Laravel y MongoDB
-
1 Introducción
-
2 Configurar la base de datos
Vamos a configurar la base de datos empleando Laravel y MongoDB.
-
3 Crear un Modelo
Vamos a crear el modelo central con el que vamos a trabajar.
-
4 Realizar operaciones CRUD
Vamos a aprender a realizar operaciones CRUD en mongoDB con el conector que instalamos de Laravel.
-
5 Tarea
Tarea
-
6 Operaciones CRUD realizadas
Operaciones CRUD realizadas
Crear un CRUD de libros con Laravel y MongoDB
-
1 Introducción
-
2 Instalar LaravelUI
Vamos a instalar LaravelUI para poder emplear Bootstrap y generar el módulo de usuario.
-
3 Configurar nuestro proyecto con LaravelUI (Bootstrap)
Vamos a configurar nuestro proyecto en Laravel con Bootstrap.
-
4 Opcional: Usar Bootstrap 5
Vamos a hacer un cambio para la versión actual de Laravel, que sería pasar de Bootstrap 4 a 5.
-
5 Opcional: Instalar FontAwesome
Vamos a instalar una iconografía para nuestro proyecto.
-
6 Registrar un usuario
Vamos a registrar un usuario mediante el formulario que nos genera Laravel de manera automática.
-
7 Crear template maestro
Vamos a crear un template o plantilla maestra para nuestro módulo admin.
-
8 CRUD: Crear listado de libros
Vamos a crear la página de listado de libros.
-
9 CRUD: Crear libros
Vamos a crear todo el proceso para crear libros.
-
10 CRUD: Mostrar mensaje de éxito
Vamos a crear un componente para leer el mensaje flash que configuramos en los cruds.
-
11 CRUD: Validaciones
Vamos a agregar validaciones para el formulario.
-
12 CRUD: Editar libros
Vamos a trabajar en la página de editar libros.
-
13 CRUD: Enlaces CRUD en el index
Vamos a crear los enlaces para hacer el crud en la página del index.
-
14 CRUD Eliminar libros
Vamos a crear el proceso para eliminar libros.
-
15 Algunos detalles en la aplicación
Vamos a proteger el dashboard con login, crear un agrupado para las rutas y unos detalles para el CRUD y la página de login.
Operadores Lógicos y de comparación en MongoDB
-
1 Comparaciones por cantidades y operadores lógicos and/or
Vamos a conocer como podemos emplear los operadores lógicos y de comparación en MongoDB.
-
2 Código Fuente
Código Fuente
Relaciones en MongoDB
-
1 Documentos embebidos: Consultas de búsqueda
Vamos a realizar algunas consultas de búsqueda con los operadores de comparación y lógicos que vimos anteriormente.
-
2 Documentos embebidos: Actualizar documentos embebidos
Vamos a aprender a actualizar un documento dentro de otro documento ya sea de tipo array o simple.
-
3 Documentos embebidos: Eliminar documentos embebidos
Vamos a aprender a eliminar un documento dentro de otro documento de tipo array.
-
4 Documentos embebidos: Agregar documentos embebidos
Vamos a aprender a agregar un documento dentro de otro documento de tipo array.
-
5 Documentos por referencia
-
6 Código Fuente
Código Fuente
Relaciones de uno a uno y uno a muchos MongoDB y Laravel
-
1 Introducción
-
2 Tarea: CRUD para las categorías
Vamos a crear rápidamente un CRUD para unas categorías.
-
3 Relación HasOne: Uno a Uno con FK
Vamos a explicar el proceso de crear relaciones de uno a uno en MongoDB.
-
4 Relación HasOne: Con documento embebido
Vamos a explicar el proceso de crear relaciones de uno a muchos y viceversa en MongoDB.
-
5 Relaciones de Uno a Muchos y de Muchos a Uno con FK
Vamos a aprender a trabajar con las relaciones de tipo One to Many pero con las opción de documentos embebidos.
-
6 Relaciones de Uno a Muchos y de Muchos a Uno con documento embebido
Vamos a explicar el proceso de crear relaciones de uno a muchos y viceversa en MongoDB pero con las opción de documentos embebidos.
-
7 Tarea y recordatorio
Tarea y recordatorio
-
8 Guardar categoría de un libro
Vamos a crear el esquema para asignar una categoría a un libro desde la aplicación.
Relaciones de muchos a muchos MongoDB y Laravel
-
1 Introducción
-
2 Tarea: CRUD para los tags
Vamos a crear rápidamente un CRUD para unas etiquetas.
-
3 Relación Many To Many (Muchos a Muchos) con FK
Vamos a crear la vista para pintar el listado de etiquetas.
-
4 Tags Libros: Estructura inicial
Vamos a crear la vista para pintar el listado de etiquetas.
-
5 Tags Libros: Guardar etiquetas de los libros
Vamos a crear el esquema para asignar etiquetas a los libros.
-
6 Tags Libros: Eliminar etiquetas de los libros
Vamos a crear el esquema para eliminar etiquetas de los libros.
-
7 Documentos por referencia
Documentos por referencia
Framework de Agregación en MongoDB:
-
1 Introducción
-
2 Presentación
-
3 Filtros con match
Vamos a mostrar el uso de la función match para colocar filtros para los documentos a obtener.
-
4 Proyecciones
Vamos a presentar el uso de las proyecciones para indicar los campos de salida.
-
5 Proyecciones y otros operadores: arrayElemAt y slice
Vamos a ver algunas combinaciones entre las proyecciones y otros operadores.
-
6 Match, Proyecciones y agregar campos dinámicos
Vamos a conocer como podemos agregar campos de manera dinámica.
-
7 Operador group
Vamos a conocer cómo podemos agrupar documentos por un campo.
-
8 Operador limit
Vamos a conocer como podemos limitar la cantidad de documentos.
-
9 Funciones matemáticas con group
Vamos a emplear algunas funciones matemáticas para la agregación, sumar, contar, mínimo, máximo y promedio.
-
10 Ordenación
Vamos a conocer cómo podemos ordenar documentos.
Extra: Actualización con Agregación Pipelines y Arrays en MongoDB:
-
1 Actualización con Agregación Pipelines en MongoDB
Vamos a hacer algunas pruebas actualizando un pull de registros mediante pipes.
-
2 Actualización de array: insertar array en un documento existente - $push
Vamos a crear un registro y luego editar el mismo para agregar un array.
-
3 Actualización de array: insertar un elemento - $push
Vamos a agregar más elementos al array anterior.
-
4 Actualización de array: insertar array de elementos - $push/$each
Vamos a insertar un array dentro del array.
-
5 Actualización de array: insertar un elemento si no existe - $addToSet
Vamos a insertar un nuevo elemento si el mismo no existe.
-
6 Actualización de array: eliminar un elemento a los extremos - $pop
Vamos a eliminar un elemento mediante el operador de pop.
-
7 Actualización de array: eliminar elementos por valor/match - $pullAll
Vamos a eliminar un grupo de elementos por el valor.
-
8 Actualización de array: eliminar elemento por valor/match - $pull
Vamos a eliminar un elemento por el valor.
-
9 Actualización de array: eliminar elemento por valor/match - $pull parte 2
-
10 Actualización de array: actualizar todos los elementos del array
Vamos a emplear el operador de $ para actualizar todos los elementos.
-
11 Actualización de array: actualizar un elemento del array
Vamos a emplear el operador de $ para actualizar un elemento.
-
12 Código fuente
Código fuente
Funciones de Agregación: Filtros de búsqueda en Laravel y MongoDB
-
1 Agregar el HTML para campos adicionales para el libro
Vamos a explicar qué campos vamos a agregar en el HTML y su composición.
-
2 Registrar en la base de datos
Vamos a hacer los cambios para que podamos registrar los datos nuevo de los campos que establecimos en el vídeo anterior.
-
3 Vamos a definir algunas columnas extras para mostrar en el listado.
Vamos a definir algunas columnas extras para mostrar en el listado.
-
4 Crear filtros para la tabla
Vamos a crear el HTML para los filtros.
-
5 Crear listado de tipos de valores distintos
Vamos a crear el listado para los tipos tomando como fuente los que ya tenemos creados y registrados en los libros.
-
6 Aplicar filtros en el controlador
Vamos a aplicar los filtros en el controlador.
-
7 Filtro rango para precio y año
Vamos a crear un filtro por rango para el año y el precio.
-
8 Opcional: acomodar el diseño del contador para el rango
Vamos a acomodar un poco el diseño del rango que creamos anteriormente.
-
9 Filtrar por rango para el año
Vamos a crear mediante el queryBuilder un filtro vía el año por rango.
-
10 Colocar valores del formulario y ajustes finales
Vamos a establecer los valores anteriores que envió nuestro usuario para el formulario tipo filtro.
-
11 Corregir problema del guardado de números como String
Vamos a corregir un problema con el casteo de los valores numéricos como el precio o el año a sus tipos de datos numéricos correspondientes.
-
12 Página de detalle de los libros (funciones de agregación)
Vamos a presentar las funciones de agregación para hacer una página de detalle.
Primeros pasos con FullCalendar
-
1 Introducción
-
2 Configurar el proyecto para el nuevo componente de calendario
Vamos a realizar algunas configuraciones al proyecto para trabajar con el nuevo proyecto.
-
3 Presentación de FullCalendar
Vamos a hablar un poco sobre el plugin de FullCalendar.
-
4 Agregar FullCalendar en nuestro proyecto
Vamos a agregar y configurar FullCalendar el proyecto en Laravel mediante Node.
-
5 Definir eventos iniciales
Vamos a crear los eventos iniciales de manera estática.
-
6 Agregar un evento de manera dinámica
Vamos a agregar eventos de manera programática.
-
7 Interactividad al calendario: Evento por rango de selección
Vamos a agregar la posibilidad de selección por rango.
-
8 Click sobre los eventos
Vamos a personalizar la opción de click sobre los eventos.
-
9 Drag and Drop de eventos
Vamos el evento click sobre los eventos.
-
10 Escalar un evento
Creando nuestra app de eventos en FullCalendar
-
1 Introducción
-
2 Registrar un evento mediante un modal de Bootstrap
Vamos a emplear un componente de modal para solicitar información del evento a nuestro usuario.
-
3 Editar eventos: Personalizar el modal
Vamos a personalizar el modal mediante un botón de eliminar para cuando vayamos a editar.
-
4 Editar eventos: Precargar datos
Vamos a precargar los datos en edición en el modal.
-
5 Eliminar evento al darle un click
Vamos a eliminar un modal mediante un click.
-
6 Colocar campos adicionales para definir los colores
Vamos a crear unos campos adicionales para trabajar con el color de texto y fondo del evento.
-
7 Dar formato a las fechas
Vamos a instalar un paquete para trabajar con las fechas.
-
8 Cambiar idioma
Vamos a cambiar el idioma del FullCalendar.
-
9 Tarea: Selección de evento en un día (allDay:false)
-
10 Solución: Selección de evento en un día (allDay:false)
Solución: Selección de evento en un día (allDay:false)
Crear una Rest Api con MongoDB y Laravel para el FullCalendar
-
1 Introducción
-
2 Explorar sobre la colección de eventos que vamos a crear
Vamos a hablar un poco sobre la app que construimos anteriormente para conocer qué atributos o campos tenemos que manejar.
-
3 Crear controlador y ruta inicial para la rest
Vamos a crear un controlador y la ruta de tipo recurso para los eventos.
-
4 Recurso para obtener todos los eventos
Vamos a crear un recurso para obtener todos los eventos.
-
5 Atributos iniciales para nuestro modelo
Vamos a crear los principales atributos de nuestro modelo de Event.
-
6 Crear un evento: Definición inicial
Vamos a crear un evento mediante un recurso.
-
7 Crear un evento: Definir validaciones
Vamos a crear las reglas de validaciones para asignar al momento de crear o editar un evento.
-
8 Crear un evento: Convertir fecha a ISODate
Vamos a convertir la fecha a ISODate, que es la empleada internamente por MongoDB.
-
9 Tarea: Recurso para editar un evento
Vas a crear el recurso para editar un documento.
-
10 Recurso para eliminar un evento
Vamos a crear el recurso para eliminar un documento.
-
11 Recurso para obtener el detalle de un evento
Vamos a crear un recurso para obtener el detalle de un documento.
-
12 Recurso para editar las fechas del evento (por rango)
Vamos a crear un recurso rest para guardar la fecha por rango.
-
13 Recurso para editar evento por hora
Vamos a crear un recurso rest para editar un evento por hora.
-
14 Recurso para crear recurso por hora
Vamos a crear un recurso rest para crear el evento por hora.
-
15 Recurso para crear recurso por hora
Vamos a crear un recurso rest para crear el evento por hora.
-
16 Mapeo de las columnas
-
17 Tarea: Mapeo para el ID
Tarea: Mapeo para el ID
-
18 Solución: Mapeo para el ID
Solución: Mapeo para el ID
Consumir la Rest Api con FullCalendar
-
1 Introducción
-
2 Obtener todos los eventos
Vamos a consumir todos los eventos de nuestra RestApi.
-
3 Crear un evento
Vamos a crear un evento en nuestra rest y en FullCalendar.
-
4 Crear un evento por día
Vamos a crear un evento por hora en nuestra rest y en FullCalendar.
-
5 Problema con el formato de la fecha para start y end
Vamos a cambiar el formato para las fechas que consume FullCalendar.
-
6 Actualizar un evento y por día
Vamos a realizar el proceso para actualizar el evento.
-
7 Problema con el resize
Vamos a acomodar un pequeño problema que tenemos al momento de cambiar el rango del evento.
-
8 Actualizar un evento por rango
Vamos a actualizar el evento por rango.
-
9 Eliminar un evento
Vamos a implementar la función de eliminar un evento.
-
10 Prueba Final
Vamos a mostrar algunos cambios sutiles realizados en el FullCalendar.
-
11 Mostrar errores
Vamos a mostrar los errores fácilmente en el momento de crear o actualizar un evento.
Carga de archivos en el FullCalendar
-
1 Definir modelo y relaciones para la carga de archivos
Vamos a crear la estructura necesaria para manejar la carga de archivos.
-
2 Definir el form y método iniciales para el procesamiento del archivo
Vamos a implementar un esbozo, para la carga de archivos mediante eventos.
-
3 Implementar el formulario para edición de eventos
Vamos a terminar de implementar la carga de archivos mediante los eventos.
-
4 Implementar el manejo de los archivo vía documentos embebidos
Vamos a cambiar nuestra lógica para emplear documentos embebidos en vez de documentos referenciales para los archivos.
-
5 Enviar formulario vía fetch
Vamos a enviar el formulario mediante una petición ajax empleando los fetch.
-
6 Adaptar diseño del modal a columnas
Vamos a adaptar el modal para que podamos emplear dos columnas.
-
7 Listar archivos cargados
Vamos a mostrar el listado de archivos que hayamos cargado para el evento seleccionado.
-
8 Tarea: Agregar archivos cargados en tiempo real
Vas a mostrar el archivo cargado en el listado anterior.
-
9 Definir un tamaño máximo para el listado de archivos
Mediante JS, vamos a detectar el tamaño máximo del modal para determinar el tamaño que vamos a permitir para el listado de archivos.
-
10 Vamos a darle algo de estilo al formulario de tipo file
Con una clase de B5, vamos a variar el estilo.
-
11 Soportar múltiples tipos de archivos
Vamos a agregar soporte para cargar otros tipos de archivos.
-
12 Maneja de errores
Vamos a trabajar en el manejo de los errores al momento de realizar la carga.
Consultas generales con el paquete de Laravel - MongoDB
-
1 Operador elemMatch
Vamos a conocer como podemos emplear este operador en conjunto con Lavavel y MongoDB.
-
2 Operador elemMatch or
Vamos a emplear el operador llamado or, como una variante al ejemplo anterior.
-
3 Operador elemMatch array de String
Vamos a trabajar con los array de tipo String y los elemMatch.
-
4 Operador in
Vamos a conocer el operador de in en un ejemplo más sencillo.
-
5 Operador exits
Este operador es útil para devolver los registros si existe cierta key almacenada.
-
6 Operador size
Este operador nos permite obtener los documentos que cuenten con un tamaño determinado.
-
7 Buscar elementos en un array por la posición
Vamos a conocer un mecanismo con el cual podemos buscar por un valor en una posición específica del array.
-
8 Obtener documentos donde el array sea mayor a...
Vamos a buscar documentos cuando la longitud sea mayo a.
-
9 Obtener documentos donde el array sea menor a...
Vamos a buscar documentos cuando la longitud sea menor a.
-
10 Operador Slice y proyecciones
Vamos a conocer el operador de Slice para devolver un subconjunto de elementos de un array.
-
11 Paginación con proyecciones
Vamos a trabajar con las proyecciones como funcionalidad para paginar resultados.
-
12 where Raw
Vamos a conocer el uso básico de la función where Raw.
-
13 Raw queries