sql >> Databasteknik >  >> NoSQL >> MongoDB

Lumen och MongoDB?

Vi använder faktiskt Lumen, Laravel, Mongo och MySQL i ett jätteprojekt så jag kan hjälpa dig igenom detta. Förutsatt att du vill använda MongoDB med vältalig istället för med den råa MongoClienten. Du hittar biblioteket jag använder från jenssegers här .

Installera MongoDB Extension

Först måste du installera beroenden för PHP för att interagera med mongo. Detaljerna för installation av mongo-tillägget finns i PHP-dokumentationen .

Efter det måste du redigera php.ini-filerna för plattformarna (apache/cli/nginx) för att ladda tillägget. Jag lade till följande före Modulinställningar

extension=mongo.so

Det säger sig självt att du måste starta om apache/nginx efter att ha ändrat konfigurationen.

Konfigurera Lumen

I din rotlumen-mapp kan du lägga till den till dina krav med följande kommando.

composer require jenssegers/mongodb

Därifrån måste du också ladda MongodbServiceProvider före Fasader eller Eloquent initieras.

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

$app->withFacades();

$app->withEloquent();

För enkelheten att organisera konfigurationen skapade jag också en config-mapp och en database.php config-fil. Eftersom Lumen inte försöker att autoladda eller söka i den här katalogen måste vi säga till den att ladda den här konfigurationen. Jag satte följande rad precis före laddningen av applikationsvägarna.

$app->configure('database');

I database.php kräver mongodb-drivrutinen en specifik struktur. Jag har inkluderat mysql här eftersom jag använder båda, men om du enbart använder mongo kan du ändra standard till mongodb och ta bort mysql-konfigurationen.

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

    ],
];

Med konfigurationen ur vägen kan du nu skapa en modell, när du skriver detta för att skapa en modell för mongo (kolla github-sidan) kan du använda följande som bas. Du kan ignorera variabeln $connection om mongo är din standarddrivrutin.

<?php

namespace App;

use Jenssegers\Mongodb\Model as Eloquent;

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

Där har du, du borde kunna interagera med mongo normalt, för detaljerna om föraren kolla in github-sidan för dokumentation om det.

Om det här svaret hjälpte kan du markera det som svaret?



  1. MongoDB tillgängliga anslutningar

  2. Mongoose findOneAndUpdate Upsert _id null?

  3. mongoexport E QUERY SyntaxError:Oväntad identifierare

  4. Stöder Azure DocumentDB Local Emulator mongodb-protokollet?