MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Lumen et MongoDB ?

Nous utilisons en fait Lumen, Laravel, Mongo et MySQL dans un projet géant afin que je puisse vous aider dans celui-ci. En supposant que vous souhaitiez utiliser MongoDB avec eloquent au lieu du MongoClient brut. Vous pouvez trouver la bibliothèque que j'utilise sur jenssegers ici .

Installer l'extension MongoDB

Tout d'abord, vous devrez installer les dépendances pour que PHP interagisse avec mongo. Les détails d'installation de l'extension mongo peuvent être trouvés sur la documentation PHP .

Après cela, vous devrez éditer les fichiers php.ini pour les plates-formes (apache/cli/nginx) pour charger l'extension. J'ai ajouté ce qui suit avant les Paramètres du module

extension=mongo.so

Il va sans dire que vous devez redémarrer apache/nginx après avoir modifié la configuration.

Configurer Lumen

Dans votre dossier lumen racine, vous pouvez l'ajouter à vos besoins avec la commande suivante.

composer require jenssegers/mongodb

À partir de là, vous devrez également charger le MongodbServiceProvider avant Facades ou Eloquent est initialisé.

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

$app->withFacades();

$app->withEloquent();

Pour simplifier l'organisation de la configuration, j'ai également créé un dossier de configuration et un fichier de configuration database.php. Étant donné que Lumen n'essaie pas de charger automatiquement ou de rechercher dans ce répertoire, nous devons lui dire de charger cette configuration. J'ai mis la ligne suivante juste avant le chargement des routes de l'application.

$app->configure('database');

Dans database.php, le pilote mongodb nécessite une structure spécifique. J'ai inclus mysql ici car j'utilise les deux, mais si vous utilisez mongo exclusivement, vous pouvez changer la valeur par défaut en mongodb et supprimer la configuration 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
            )
        ),

    ],
];

Avec la configuration à l'écart, vous pouvez maintenant créer un modèle, au moment d'écrire ceci pour créer un modèle pour mongo (consultez la page github), vous pouvez utiliser ce qui suit comme base. Vous pouvez ignorer la variable $connection si mongo est votre pilote par défaut.

<?php

namespace App;

use Jenssegers\Mongodb\Model as Eloquent;

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

Voilà, vous devriez pouvoir interagir normalement avec mongo, pour les spécificités du pilote, consultez la page github pour obtenir de la documentation à ce sujet.

Si cette réponse vous a aidé, pourriez-vous la marquer comme réponse ?