MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Lumen und MongoDB?

Wir verwenden Lumen, Laravel, Mongo und MySQL tatsächlich in einem riesigen Projekt, also kann ich Ihnen bei diesem Projekt helfen. Angenommen, Sie möchten MongoDB mit eloquent statt mit dem rohen MongoClient verwenden. Die von mir verwendete Bibliothek von Jenssegers finden Sie hier .

MongoDB-Erweiterung installieren

Zuerst müssen Sie die Abhängigkeiten für PHP installieren, um mit Mongo zu interagieren. Einzelheiten zur Installation der Mongo-Erweiterung finden Sie in der PHP-Dokumentation .

Danach müssen Sie die php.ini-Dateien für die Plattformen (Apache/cli/nginx) bearbeiten, um die Erweiterung zu laden. Folgendes habe ich vor Moduleinstellungen hinzugefügt

extension=mongo.so

Es versteht sich von selbst, dass Sie apache/nginx neu starten müssen, nachdem Sie die Konfiguration geändert haben.

Lumen konfigurieren

In Ihrem Root-Lumen-Ordner können Sie es mit dem folgenden Befehl zu Ihren Anforderungen hinzufügen.

composer require jenssegers/mongodb

Von dort aus müssen Sie auch den MongodbServiceProvider vorher laden Facades oder Eloquent wird initialisiert.

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

$app->withFacades();

$app->withEloquent();

Zur Vereinfachung der Organisation der Konfiguration habe ich auch einen Konfigurationsordner und eine database.php-Konfigurationsdatei erstellt. Da Lumen nicht versucht, dieses Verzeichnis automatisch zu laden oder zu durchsuchen, müssen wir es anweisen, diese Konfiguration zu laden. Ich habe die folgende Zeile direkt vor das Laden der Anwendungsrouten eingefügt.

$app->configure('database');

In der database.php benötigt der Mongodb-Treiber eine bestimmte Struktur. Ich habe mysql hier eingefügt, da ich beide verwende, aber wenn Sie ausschließlich mongo verwenden, können Sie die Standardeinstellung auf mongodb ändern und die mysql-Konfiguration entfernen.

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
            )
        ),

    ],
];

Wenn die Konfiguration aus dem Weg geräumt ist, können Sie jetzt ein Modell erstellen. Wenn Sie dies schreiben, um ein Modell für Mongo zu erstellen (siehe Github-Seite), können Sie Folgendes als Basis verwenden. Sie können die $connection-Variable ignorieren, wenn Mongo Ihr Standardtreiber ist.

<?php

namespace App;

use Jenssegers\Mongodb\Model as Eloquent;

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

Los geht's, Sie sollten in der Lage sein, normal mit Mongo zu interagieren, für die Einzelheiten des Treibers besuchen Sie die Github-Seite für die Dokumentation dazu.

Wenn Ihnen diese Antwort geholfen hat, könnten Sie sie als Antwort markieren?