En esta página:
Demo
Si unimos uno de los Frameworks más populares de PHP como Laravel junto a una de las base de datos no relacionales más potentes del medio como MongoDB, podemos lograr crear cosas geniales y profesionales, en este tutorial te enseñare como conectar Laravel a una base de datos MongoDB y para verificar que la conexión se realizo sin problemas, vamos a listar unos datos en una tabla HTML de Bootstrap 4.5, vamos con ello.
Partes
- Parte 1
- Parte 2 (Final – Código Fuente GitHub)
Antes de continuar con este Post, te invito a leer los siguientes artículos:
- Que es Laravel + Tu Primera Aplicación con Laravel
- Las Novedades más destacadas que trae Laravel 8
- Las Novedades más destacadas que trae Laravel 7
- 6 Helpers de gran Utilidad en Laravel 7
- Como crear un CRUD con Galería de Imágenes en Laravel 6.2 y Bootstrap 4 – Parte 1
- Como Trabajar con Query Scopes (Ámbitos de Consulta) en Laravel 7
- Como Crear un Sistema de Notificaciones de Eventos en la Base de Datos MySQL con Laravel 8 – Parte 1
- Lee más artículos en la categoría Laravel
- Que es MongoDB y otros Detalles
- 5 GUIs para trabajar con MongoDB
- Como usar MongoDB (Creación de Tabla Postres) – Parte 1
- Puedes leer más artículos en la categoría MongoDB
Asimismo te invito a escuchar el Podcast: “Dominio del trabajo con Varios Lenguajes de Programación”:
Spotify | SoundCloud |
Bien ahora continuemos con el Post: Como Usar Mongo DB en Laravel 8 + Listado de Datos – Parte 1.
Existen paquetes que te permite hacer una conexión entre Laravel y MongoDB, yo usaré código puro para que puedas ver ciertos detalles que haciendo uso de un paquete no te dejará apreciar.
Creación de Nuevo Proyecto
Vamos a comenzar creando un proyecto nuevo en Laravel 8, para esto ejecutamos el siguiente comando.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# Creación de nuevo proyecto en Laravel 8 laravel new laravel-8-mongodb Crafting application... Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Package operations: 106 installs, 0 updates, 0 removals - Installing doctrine/inflector (2.0.3): Loading from cache - Installing doctrine/lexer (1.2.1): Loading from cache - Installing dragonmantank/cron-expression (3.0.1): Downloading (connecting...Downloading (100%) - Installing voku/portable-ascii (1.5.3): Downloading (100%) - Installing symfony/polyfill-php80 (v1.18.1): Downloading (100%) - Installing symfony/polyfill-mbstring (v1.18.1): Downloading (100%) ... ... ( Continua la instalación ) ... phpunit/phpunit suggests installing ext-xdebug (*) Generating optimized autoload files > @php -r "file_exists('.env') || copy('.env.example', '.env');" > @php artisan key:generate --ansi Application key set successfully. > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover --ansi Discovered Package: facade/ignition Discovered Package: fideloper/proxy Discovered Package: fruitcake/laravel-cors Discovered Package: laravel/tinker Discovered Package: nesbot/carbon Discovered Package: nunomaduro/collision Package manifest generated successfully. Application ready! Build something amazing. # Ingresamos al directorio del proyecto creado cd laravel-8-mongodb |
Yo le he puesto a mi proyecto el nombre laravel-8-mongodb, tu le puedes dar el nombre que desees.
Después de ejecutar el comando para crear el proyecto, Laravel 8 me crea el siguiente conjunto de directorios y archivos útiles para que Laravel y el proyecto funcionen correctamente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/laravel-8-mongodb ├── /app ├── /bootstrap ├── /config ├── /database ├── /public ├── /resources ├── /routes ├── /storage ├── /tests ├── /vendor ├── .editorconfig ├── .env ├── .env.example ├── .styleci.yml ├── artisan ├── composer.json ├── composer.lock ├── package.json ├── phpunit.xml ├── server.php ├── webpack.mix.js |
Entonces con esto hemos instalado Laravel 8 y creado un nuevo proyecto.
Base de Datos Mongo DB
Yo ya tengo creada una base de datos llamada mibasededatos (valga la redundancia) con una colección llamada postres, la cual contiene 5 documentos o postres en su interior, los puedo ver haciendo uso de MongoDB Compass Community una GUI oficial de MongoDB que me permite gestionar mis bases de datos, documentos, colecciones, etc.
Como puedes ver en la imagen anterior, tengo 5 ítems que son _id (ObjectId), nombre (String), precio (Double), stock (Double) e img (String). Estos items los he insertado manualmente haciendo uso de la Mongo Shell, puedes leer el siguiente artículo llamado “Como usar MongoDB (Creación de Tabla Postres) – Parte 1” en donde explico como insertar datos mediante la Mongo Shell (El campo img si lo he insertado recientemente, pero es un dato de tipo String y se puede insertar de igual manera mediante la Mongo Shell).
Para poder leer estos datos necesitamos realizar ciertas configuraciones, si bien yo estoy usando un entorno local para este tutorial, se pueden aplicar los pasos similares en un servidor de pago como una VPS, ahora pasemos a configurar MongoDB.
Integración de MongoDB y Laravel 8
Primero necesitamos colocar los controladores o drivers de Mongo DB en PHP, estos son un par de archivos llamados php_mongodb.dll y php_mongodb.pdb en el directorio ext, este directorio se encuentra dentro del directorio llamado php que es en donde tengo instalado PHP, como yo estoy usando XAMPP debo de colocarlo en xampp > php > ext
Los archivos php_mongodb.dll y php_mongodb.pdb debo de descargarlo desde el siguiente enlace, recuerda descargar los archivos para la versión de PHP que tienes instalada en tu computadora, asimismo para la versión de 64 o 32 bytes.
Como yo estoy usando Windows 8.1 de 64 bytes y PHP 7.3, pues debo descargarme el archivo 7.3 Thread Safe (TS) x64, se me descarga un archivo zip en donde se encuentran los archivos php_mongodb.dll y php_mongodb.pdb, estos archivos los debo de colocar en xampp > php > ext como mencione anteriormente.
Luego debemos de colocar el archivo DLL que descargamos php_mongodb.dll como una extensión de PHP, para esto abrimos el archivo php.ini y agregamos antes del nombre del archivo la palabra extension= y seguido colocamos el nombre del archivo.
1 2 3 4 |
# Colocamos el archivo DLL como una extensión en el archivo 'php.ini' extension=php_mongodb.dll |
También necesitamos instalar el paquete mongodb en Laravel 8, para esto usaremos composer, vamos a la consola de comandos y ejecutamos el siguiente comando.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
composer require mongodb/mongodb Using version ^1.7 for mongodb/mongodb ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Nothing to install or update Generating optimized autoload files composer/package-versions-deprecated: Generating version class... composer/package-versions-deprecated: ...done generating version class > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover --ansi Discovered Package: facade/ignition Discovered Package: fideloper/proxy Discovered Package: fruitcake/laravel-cors Discovered Package: laravel/tinker Discovered Package: nesbot/carbon Discovered Package: nunomaduro/collision Package manifest generated successfully. |
El paquete mongodb que he instalado es una librería que proporciona una abstracción de alto nivel en torno al controlador DLL php_mongodb.dll que descargamos anteriormente.
Bueno hasta aquí llegamos con esta Parte 1 en donde hemos instalado Mongo DB en PHP, asimismo tenemos integrado MongoDB en Laravel 8, en la Parte 2 y última de este tutorial realizaremos la conexión a la base de datos MongoDB desde Laravel junto con el listado de datos y otros detalles.
Ten Paciencia, lo que quiero es que conozcas bien como se crea este proyecto y no llenarte el capitulo de mucho contenido porque te puedes marear y no tendrás un óptimo aprendizaje.
Nota (s)
- En la Parte 2 de este tutorial, crearemos las migraciones para las tablas de la base de datos y otros detalles.
- No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.