Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Comenzar con Laravel MongoDB

Esta guía muestra cómo agregar Laravel MongoDB a una nueva aplicación web Laravel, conectarse a un clúster de MongoDB alojado en MongoDB Atlas y realizar operaciones de lectura y escritura sobre los datos.

Tip

Si prefieres conectarte a MongoDB mediante la librería PHP de MongoDB sin Laravel, consulta Conectarse a MongoDB en la documentación de la librería PHP de MongoDB.

La integración de Laravel extiende la sintaxis de Eloquent y Query Builder para almacenar y recuperar datos desde MongoDB.

MongoDB Atlas es un servicio de base de datos gestionada en la nube que aloja las implementaciones de MongoDB. Se puede crear una implementación propia gratuita de MongoDB Atlas (sin necesidad de tarjeta de crédito) siguiendo los pasos de esta guía.

Tip

Se puede descargar el proyecto completo de aplicación web clonando el repositorio de GitHub laravel-quickstart.

Para crear la aplicación Get Started, necesitas tener instalados los siguientes programas en tu entorno de desarrollo:

  • PHP

  • Una aplicación de terminal y shell. Para usuarios de MacOS, utiliza terminal o una aplicación similar. Para usuarios de Windows, utiliza PowerShell.

Realiza los siguientes pasos para instalar y agregar las dependencias de Laravel Integration a una aplicación web Laravel.

Tip

Como alternativa a los siguientes pasos de instalación, puedes usar Laravel Herd para instalar MongoDB y configurar un entorno de desarrollo para Laravel MongoDB. Para obtener más información sobre cómo usar Laravel Herd con MongoDB, consulta Instalación de MongoDB a través de Herd Pro en la documentación de Herd.

1

Laravel MongoDB requiere la extensión PHP de MongoDB para gestionar las conexiones y comandos de MongoDB. Para aprender cómo instalar la extensión PHP de MongoDB, consulta el paso Instalar la extensión PHP de MongoDB de la guía Cómo empezar con la librería PHP.

2

Asegúrate de que la versión de Laravel que instales sea compatible con la versión de la Integración de Laravel. Para saber qué versiones son compatibles, consulta la página de Compatibilidad.

Ejecuta el siguiente comando para instalar Laravel:

composer global require laravel/installer

Cuando se complete la instalación, el comando mostrará el siguiente mensaje:

Using version ^<version number> for laravel/installer
3

Ejecute el siguiente comando para generar una nueva aplicación web de Laravel llamada my-app:

laravel new my-app

Cuando se complete la instalación, el comando mostrará el siguiente mensaje:

INFO Application ready in [my-app]. You can
start your local development using:
➜ cd my-app
➜ php artisan serve
New to Laravel? Check out our bootcamp and documentation.
Build something amazing!
4

Navegue hasta el directorio de la aplicación que creó en el paso anterior:

cd my-app

Ejecuta el siguiente comando para añadir la clave de cifrado de la aplicación Laravel, que es necesaria para cifrar cookies:

php artisan key:generate
5

Ejecuta el siguiente comando para agregar la dependencia Laravel MongoDB a tu aplicación:

composer require mongodb/laravel-mongodb:^5.8

Cuando finalice la instalación, comprueba que el archivo composer.json incluya la siguiente línea en el objeto require:

"mongodb/laravel-mongodb": "^5.8"

Después de completar estos pasos, tendrás un nuevo proyecto Laravel con las dependencias de Integración Laravel instaladas.

1

Complete la guía de inicio de MongoDB para configurar una nueva cuenta de Atlas y cargar datos de muestra en una nueva implementación de MongoDB de nivel gratuito. Siga las instrucciones en las pestañas de Cloud Deployment para crear su implementación de MongoDB Atlas en la nube.

2

Después de crear un usuario de base de datos, guardar el nombre de usuario y la contraseña de ese usuario en una ubicación segura para usarlos en un paso próximo.

Después de completar estos pasos, tendrás una nueva implementación de MongoDB de nivel gratuito en Atlas, credenciales de usuario de base de datos y datos de muestra cargados en tu base de datos.

Puede conectarse a su implementación de MongoDB proporcionando un URI de conexión, también llamado cadena de conexión, que instruye al controlador sobre cómo conectarse a una implementación de MongoDB y cómo comportarse mientras está conectado.

La cadena de conexión incluye el nombre de host o la dirección IP y el puerto de la implementación, el mecanismo de autenticación, las credenciales de usuario cuando sea aplicable, y las opciones de conexión.

Para conectarse a una instancia o implementación que no esté alojada en Atlas, consulte el apartado Cadenas de conexión en el manual del servidor.

1

Para recuperar la cadena de conexión para la implementación que creó en el paso anterior, inicie sesión en su cuenta de Atlas y navegue a la página Clusters bajo la sección Database. Haga clic en el botón Connect para la nueva implementación.

El botón de conexión en la sección de clústeres de la interfaz de usuario de Atlas

Si aún no tienes un usuario de base de datos configurado, MongoDB te pedirá que crees y configures un nuevo usuario.

Haga clic en el botón Drivers debajo de Connect to your application y seleccione "PHP" del menú de selección Driver y la versión que mejor coincida con la versión que instaló del menú de selección Version.

Asegúrate de que la opción View full code sample esté desmarcada para ver solo la cadena de conexión.

2

Haz clic en el icono de copiar que está al lado derecho de la cadena de conexión para copiarla en tu portapapeles, como se muestra en la siguiente captura de pantalla:

El botón de copia de la cadena de conexión en la Interfaz de Usuario de Atlas
3

Pega esta cadena de conexión en un archivo en tu editor de texto preferido y reemplaza el marcador de posición <db_password> con la contraseña de tu usuario de base de datos. La cadena de conexión ya está completada con el nombre de usuario de tu usuario de base de datos.

Guarda este archivo en una ubicación segura para usarlo en el siguiente paso.

Después de completar estos pasos, hay una cadena de conexión que contiene el nombre de usuario y la contraseña de la base de datos.

1

Copia el archivo .env.example en un archivo llamado .env en el directorio raíz del proyecto ejecutando el siguiente comando de shell:

cp .env.example .env

Abra el archivo .env y añada o edite las siguientes variables y valores. Reemplace el marcador de posición <connection string> con su cadena de conexión del paso Crear una cadena de conexión:

DB_CONNECTION=mongodb
DB_URI="<connection string>"

Por ejemplo, si tu cadena de conexión es "mongodb+srv://myUser:myPass123@mongo0.example.com/", tu variable DB_URI coincide con la siguiente línea:

DB_URI="mongodb+srv://myUser:myPass123@mongo0.example.com/"

Nota

Asegúrate de que estas variables en tu archivo .env estén indefinidas en la shell donde ejecutes tu aplicación. Las variables de entorno en el shell tienen prioridad sobre las del archivo .env.

2

Abra el archivo database.php en el directorio config y configure la conexión de base de datos predeterminada a la variable de entorno DB_CONNECTION, como se muestra en la siguiente línea:

'default' => env('DB_CONNECTION'),

Agregue la siguiente entrada resaltada mongodb al arreglo connections en el mismo archivo:

'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('DB_URI'),
'database' => 'sample_mflix',
],
],
// ...
3

Abre el archivo providers.php en el directorio bootstrap y añade la siguiente entrada al arreglo:

MongoDB\Laravel\MongoDBServiceProvider::class,

Tip

Para aprender a registrar el proveedor en Laravel 10.x, consulta Registrando proveedores.

Tras completar estos pasos, tu aplicación web Laravel estará lista para conectarse a MongoDB.

1

Cree un modelo llamado Movie para representar datos de la colección de muestra movies en su base de datos de MongoDB y el controlador de recursos correspondiente ejecutando el siguiente comando:

php artisan make:model Movie -cr

Cuando el comando se completa, muestra el siguiente mensaje:

INFO Model [app/Models/Movie.php] created successfully.
INFO Controller [app/Http/Controllers/MovieController.php]
created successfully.
2

Abre el modelo Movie.php en tu directorio app/Models y realiza las siguientes ediciones:

  • Reemplace la importación de Illuminate\Database\Eloquent\Model por MongoDB\Laravel\Eloquent\Model

  • Especifica "mongodb" en el campo $connection

El archivo Movie.php editado contiene el siguiente código:

<?php
namespace App\Models;
use MongoDB\Laravel\Eloquent\Model;
class Movie extends Model
{
protected $connection = 'mongodb';
}
3

Abra el archivo MovieController.php en su directorio app/Http/Controllers. Reemplace la función show() con el siguiente código para recuperar resultados que coincidan con una query en la base de datos y renderizarlos en la vista:

public function show()
{
return view('browse_movies', [
'movies' => Movie::where('runtime', '<', 60)
->where('imdb.rating', '>', 8.5)
->orderBy('imdb.rating', 'desc')
->take(10)
->get()
]);
}
4

Abre el archivo web.php en el directorio routes. Agrega una importación para el MovieController y una ruta llamada browse_movies como se muestra en el siguiente código:

<?php
// ...
use App\Http\Controllers\MovieController;
Route::get('/browse_movies/', [MovieController::class, 'show']);
5

Ejecute el siguiente comando desde el directorio raíz de la aplicación para crear una vista que muestre datos de películas:

php artisan make:view browse_movies

Después de ejecutar el comando, se muestra el siguiente mensaje:

INFO View [resources/views/browse_movies.blade.php] created
successfully.

Abra el archivo de vista browse_movies.blade.php en el directorio resources/views. Remplaza el contenido por el siguiente código y guarda los cambios:

<!DOCTYPE html>
<html>
<head>
<title>Browse Movies</title>
</head>
<body>
<h2>Movies</h2>
@forelse ($movies as $movie)
<p>
Title: {{ $movie->title }}<br>
Year: {{ $movie->year }}<br>
Runtime: {{ $movie->runtime }}<br>
IMDB Rating: {{ $movie->imdb['rating'] }}<br>
IMDB Votes: {{ $movie->imdb['votes'] }}<br>
Plot: {{ $movie->plot }}<br>
</p>
@empty
<p>No results</p>
@endforelse
</body>
</html>
6

En lugar de generar una vista y editar el archivo browse_movies.blade.php, puedes usar el método toJson() para mostrar tus resultados en formato JSON.

Reemplaza la función show() con el siguiente código para recuperar los resultados y devolverlos como documentos JSON:

public function show()
{
$results = Movie::where('runtime', '<', 60)
->where('imdb.rating', '>', 8.5)
->orderBy('imdb.rating', 'desc')
->take(10)
->get();
return $results->toJson();
}
7

Ejecutá el siguiente comando desde el directorio raíz de la aplicación para iniciar tu servidor web integrado de PHP:

php artisan serve

Una vez que el servidor se inicia, emite el siguiente mensaje:

INFO Server running on [http://127.0.0.1:8000].
Press Ctrl+C to stop the server
8

Abre la URL http://:127.0.0.1 8000/browse_movies en tu navegador web. La página muestra una lista de películas y detalles sobre cada una de ellas.

Tip

Puedes ejecutar el comando php artisan route:list desde el directorio raíz de tu aplicación para ver una lista de las rutas disponibles.

1

Reemplace el método store() en el archivo MovieController.php, ubicado en el directorio app/Http/Controllers con el siguiente código:

public function store(Request $request)
{
$data = $request->all();
$movie = new Movie();
$movie->fill($data);
$movie->save();
}
2

Genera un archivo de ruta API ejecutando el siguiente comando:

php artisan install:api

Tip

Omitir este paso si usas Laravel 10.x porque el archivo que genera el comando ya existe.

Importa el controlador y añade una ruta de API que llame al método store() en el archivo routes/api.php:

use App\Http\Controllers\MovieController;
// ...
Route::resource('movies', MovieController::class)->only([
'store'
]);
3

Actualiza el modelo Movie en el directorio app/Models para especificar los campos que el método fill() rellena, como se muestra en el siguiente código:

class Movie extends Model
{
protected $connection = 'mongodb';
protected $fillable = ['title', 'year', 'runtime',
'imdb', 'plot'];
}
4

Crea un archivo llamado movie.json e introduce los siguientes datos:

{
"title": "The Laravel MongoDB Quick Start",
"year": 2024,
"runtime": 15,
"imdb": {
"rating": 9.5,
"votes": 1
},
"plot": "This movie entry was created by running through
the Laravel MongoDB Quick Start tutorial."
}

Envía la carga útil JSON al endpoint como una solicitud POST ejecutando el siguiente comando en tu shell:

curl -H "Content-Type: application/json" \
--data @movie.json \
http://localhost:8000/api/movies
5

Abra http://:127.0.0.1 8000/browse_movies en su navegador web para ver la información de la película que envió. La película insertada aparece en la parte superior de los resultados.

¡Felicidades por completar la guía de inicio!

Después de completar estos pasos, tendrás una aplicación web de Laravel que utiliza Laravel MongoDB para conectar a tu implementación de MongoDB, ejecutar una query en los datos de muestra y renderizar un resultado recuperado.

Puedes descargar el proyecto de la aplicación web clonando el laravel-quickstart repositorio de GitHub.

Tip

Tutorials

Aprende cómo implementar más funcionalidades CRUD en una aplicación Laravel MongoDB siguiendo el tutorial Crea un servicio back-end usando Laravel MongoDB.

Aprende a crear una aplicación full stack que use Laravel MongoDB siguiendo el tutorial Clon de Instagram full stack con Laravel y MongoDB en YouTube.

Obtén más información sobre las funcionalidades de MongoDB de Laravel en los siguientes recursos:

Nota

Si tiene problemas en esta página, envíe sus comentarios utilizando la pestaña Rate this page en el lado derecho o inferior derecho de esta página.

Puede encontrar soporte para preguntas generales mediante la etiqueta Stack Overflow de MongoDB o la comunidad de Reddit de MongoDB.