MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Lumen e MongoDB?

In realtà stiamo usando Lumen, Laravel, Mongo e MySQL in un progetto gigante, quindi posso aiutarti in questo. Supponendo che tu voglia usare MongoDB con eloquent invece che con MongoClient grezzo. Puoi trovare la libreria che sto usando da jenssegers qui .

Installa l'estensione MongoDB

Per prima cosa dovrai installare le dipendenze affinché PHP interagisca con mongo. Le specifiche per l'installazione dell'estensione mongo sono disponibili nella documentazione PHP .

Dopodiché dovrai modificare i file php.ini per le piattaforme (apache/cli/nginx) per caricare l'estensione. Ho aggiunto quanto segue prima di Impostazioni modulo

extension=mongo.so

Inutile dire che è necessario riavviare apache/nginx dopo aver modificato la configurazione.

Configurazione di Lumen

Nella tua cartella lumen radice puoi aggiungerlo alle tue esigenze con il seguente comando.

composer require jenssegers/mongodb

Da lì dovrai caricare anche MongodbServiceProvider prima Facades o Eloquent viene inizializzato.

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

$app->withFacades();

$app->withEloquent();

Per semplicità di organizzazione della configurazione ho anche creato una cartella di configurazione e un file di configurazione database.php. Poiché Lumen non tenta di caricare automaticamente o cercare questa directory, dobbiamo dirgli di caricare questa configurazione. Ho inserito la seguente riga subito prima del caricamento dei percorsi dell'applicazione.

$app->configure('database');

In database.php il driver mongodb richiede una struttura specifica. Ho incluso mysql qui perché li uso entrambi, ma se stai usando esclusivamente mongo puoi cambiare default in mongodb e rimuovere la configurazione di 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 configurazione fuori mano ora puoi creare un modello, mentre scrivo questo per creare un modello per mongo (controlla la pagina di github) puoi usare quanto segue come base. Puoi ignorare la variabile $connection se mongo è il tuo driver predefinito.

<?php

namespace App;

use Jenssegers\Mongodb\Model as Eloquent;

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

Ecco fatto, dovresti essere in grado di interagire normalmente con mongo, per le specifiche del driver controlla la pagina github per la documentazione su di esso.

Se questa risposta ti ha aiutato, potresti contrassegnarla come risposta?