sql >> Base de Datos >  >> NoSQL >> MongoDB

Lumen y MongoDB?

De hecho, estamos usando Lumen, Laravel, Mongo y MySQL en un proyecto gigante, así que puedo ayudarlo con este. Suponiendo que desea usar MongoDB con elocuente en lugar de MongoClient sin formato. Puede encontrar la biblioteca que estoy usando de jenssegers aquí .

Instalar la extensión MongoDB

En primer lugar, deberá instalar las dependencias para que PHP interactúe con mongo. Los detalles para instalar la extensión mongo se pueden encontrar en la documentación de PHP .

Después de eso, deberá editar los archivos php.ini para las plataformas (apache/cli/nginx) para cargar la extensión. Agregué lo siguiente antes de Configuración del módulo

extension=mongo.so

No hace falta decir que debe reiniciar apache/nginx después de cambiar la configuración.

Configuración de lúmenes

En su carpeta de lumen raíz, puede agregarlo a sus requisitos con el siguiente comando.

composer require jenssegers/mongodb

A partir de ahí, también deberá cargar MongodbServiceProvider antes Se inicializa Facades o Eloquent.

$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class);

$app->withFacades();

$app->withEloquent();

Para simplificar la organización de la configuración, también creé una carpeta de configuración y un archivo de configuración de base de datos.php. Dado que Lumen no intenta cargar automáticamente o buscar en este directorio, tenemos que decirle que cargue esta configuración. Coloco la siguiente línea justo antes de cargar las rutas de la aplicación.

$app->configure('database');

En base de datos.php, el controlador mongodb requiere una estructura específica. Incluí mysql aquí porque uso ambos, pero si usa mongo exclusivamente, puede cambiar el valor predeterminado a mongodb y eliminar la configuración de mysql.

return  [
    'default' => 'mysql',

    'connections' => [
        'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', ''),
            'username'  => env('DB_USERNAME', ''),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],

        'mongodb' => array(
            'driver'   => 'mongodb',
            'host'     => env('MONGODB_HOST', 'localhost'),
            'port'     => env('MONGODB_PORT', 27017),
            'username' => env('MONGODB_USERNAME', ''),
            'password' => env('MONGODB_PASSWORD', ''),
            'database' => env('MONGODB_DATABASE', ''),
            'options' => array(
                'db' => env('MONGODB_AUTHDATABASE', '') //Sets the auth DB
            )
        ),

    ],
];

Con la configuración fuera del camino, ahora puede crear un modelo, al escribir esto para crear un modelo para mongo (consulte la página de github), puede usar lo siguiente como base. Puede ignorar la variable $conexión si mongo es su controlador predeterminado.

<?php

namespace App;

use Jenssegers\Mongodb\Model as Eloquent;

class Example extends Eloquent 
{
    protected $connection = 'mongodb';
    protected $collection = 'example';
    protected $primaryKey = '_id';
}

Ahí tienes, deberías poder interactuar con mongo normalmente, para conocer los detalles del controlador, consulta la página de github para obtener documentación sobre él.

Si esta respuesta te ayudó, ¿podrías marcarla como respuesta?