Configurar Laravel con MongoDB
Continuación...
Continuando la publicación anterior, que puede ver
aquí, ya tenemos
nuestra Base de datos configurada con algunos documentos en nuestra colección "jobs" o la que ustedes
hayan creado, ahora vamos a proceder a configurar nuestro proyecto en Laravel para que se conecte a nuestra Base
de datos.
Manos a la obra...
Lo primero que debemos hacer y para facilitarnos
mucho está labor, es instalar el siguiente paquete con composer:
composer require jenssegers/mongodb
Igual podemos visitar aquí el repositorio de Github, donde está mejor
documentado como usar está librería o paquete.
Sabremos que la instalación se ha hecho
correctamente, cuando veamos en nuestro archivo composer.json esté nuestra librería instalada, así como muestra
a continuación:
Dependiente de su versión de Laravel, deberán
copiar el provider en el archivo config/app.php, este paso no es necesario para versiones nuevas de
Laravel, pero igual no hace sin desean realizar este paso.
Como vemos en la siguiente imagen, pegamos esta
línea dentro de la sección "providers". Aquí la línea para que la puedan copiar:
Jenssegers\Mongodb\MongodbServiceProvider::class,
Luego debemos ir al archivo config/database.php y debemos agregar este elemento del array
"connections":
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', 27017),
'database' => env('DB_DATABASE', 'homestead'),
'username' => env('DB_USERNAME', 'homestead'),
'password' => env('DB_PASSWORD', 'secret'),
'options' => [
// here you can pass more settings to the Mongo Driver Manager
// see https://www.php.net/manual/en/mongodb-driver-manager.construct.php under "Uri Options" for a list of complete
parameters that you can use
'database' => env('DB_AUTHENTICATION_DATABASE', 'admin'), // required with Mongo 3+
],
],
Ya una vez colocado está configuración, nos vamos a
ir al archivo .env y haremos las siguientes ediciones. Cabe destacar que deben colocar las configuraciones
pertinentes que hayan hecho al crear la base de datos.
DB_CONNECTION=mongodb
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=test_db
DB_USERNAME=admin
DB_PASSWORD=admin
DB_AUTHENTICATION_DATABASE=test_db
Debe quedar parecido a lo anterior. Aquí estamos
super cerca de probar que funcione, porque en este punto ya debe estar funcionando. Una manera de probarlo, pero
sin ver resultado, podemos ejecutar el siguiente comando en nuestra terminal y verificar en el navegador si abre
la pantalla de bienvenida de Laravel que nos acostumbra a mostrar:
php artisan serve
Debe verse en el navegador escribiendo
http://localhost:8080 o el puerto que les indique al iniciar laravel.
Para realizar ya una prueba más real, podemos
agarrar y crearnos un modelo con el nombre de nuestra colección que creamos en la publicación anterior. En mi
caso mi colección se llama "jobs" por lo que creare un modelo con nombre Job.
Ejecutaremos el siguiente comando:
php artisan make:model Models/Job
Donde se creará un archivo dentro de la carpeta
app/Models con el nombre Job.php. Allí haremos unas ediciones al código para que nos queda de la
siguiente manera:
<?php
namespace App\Models;
use Jenssegers\Mongodb\Eloquent\Model;
class Job extends Model
{
protected $connection = 'mongodb';
}
Ahora vamos routes/web.php y colocaremos lo siguiente:
<?php
use App\Models\Job;
Route::get('/', function () {
// return view('welcome');
return Job::all();
});
Esto no es lo más adecuado, pero ya debería de devolver los documentos de nuestra colección igualmente desde la página de bienvenida de Laravel, es decir que solo bastaría recargar la página en el navegador. Debe aparecer les algo parecido a continuación.
Listo ya tenemos Laravel con MongoDB funcionando. Ya lo que falta es crear un controlador y hacer el respectivo CRUD y lo mejor de todo, pueden hacerlo igual como si una base de datos relacional se tratase, pero eso lo dejo a su disposición y comenzar a jugar con su nuevo proyecto Laravel MongoDB.
Conclusión
Definitivamente configurar un proyecto Laravel con MongoDB puede ser un poco tortuoso, pero ya una vez funcionando se hace un poco más fácil su uso, además que nos quita tener que hacer migraciones iniciales al proyecto, aunque puede ser necesario para configurar indices y alguna que otra regla a nuestra base de datos. Sin más que decir me despido en esta ocasión, ya saben dejen sus comentarios que les pareció este minitutorial, si ya empezaron a hacer su CRUD y les surgieron dudas, no lo piensen dos veces y déjenlo por aquí que seguro les responderemos.
Saludos y hasta luego.