MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Lumen e MongoDB?


Na verdade, estamos usando Lumen, Laravel, Mongo e MySQL em um projeto gigante para que eu possa ajudá-lo neste. Supondo que você queira usar o MongoDB com eloquente em vez de com o MongoClient bruto. Você pode encontrar a biblioteca que estou usando em jensegers aqui .

Instalar a extensão MongoDB


Primeiramente você precisará instalar as dependências do PHP para interagir com o mongo. Os detalhes para instalar a extensão mongo podem ser encontrados na documentação do PHP .

Depois disso você terá que editar os arquivos php.ini das plataformas (apache/cli/nginx) para carregar a extensão. Eu adicionei o seguinte antes de Configurações do módulo
extension=mongo.so

Escusado será dizer que você precisa reiniciar o apache/nginx depois de alterar a configuração.

Configurando o lúmen


Na sua pasta de lúmen raiz, você pode adicioná-lo aos seus requisitos com o seguinte comando.
composer require jenssegers/mongodb

A partir daí, você também precisará carregar o MongodbServiceProvider antes Facades ou Eloquent é inicializado.
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class);

$app->withFacades();

$app->withEloquent();

Para simplificar a organização da configuração, também criei uma pasta de configuração e um arquivo de configuração database.php. Como o Lumen não tenta carregar automaticamente ou pesquisar este diretório, temos que dizer a ele para carregar essa configuração. Coloquei a seguinte linha logo antes de carregar as rotas do aplicativo.
$app->configure('database');

Em database.php o driver mongodb requer uma estrutura específica. Incluí o mysql aqui, pois uso os dois, mas se você estiver usando o mongo exclusivamente, poderá alterar o padrão para mongodb e remover a configuração do 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
            )
        ),

    ],
];

Com a configuração fora do caminho, agora você pode criar um modelo, ao escrever isso para criar um modelo para o mongo (verifique a página do github), você pode usar o seguinte como base. Você pode ignorar a variável $connection se o mongo for seu driver padrão.
<?php

namespace App;

use Jenssegers\Mongodb\Model as Eloquent;

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

Pronto, você deve ser capaz de interagir com o mongo normalmente, para as especificações do driver, confira a página do github para documentação sobre ele.

Se essa resposta te ajudou, você poderia marcar como resposta?