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

Lumen og MongoDB?

Vi bruger faktisk Lumen, Laravel, Mongo og MySQL i et kæmpe projekt, så jeg kan hjælpe dig igennem dette. Forudsat at du vil bruge MongoDB med veltalende i stedet for med den rå MongoClient. Du kan finde det bibliotek, jeg bruger fra jenssegers her .

Installer MongoDB Extension

For det første skal du installere afhængighederne for PHP til at interagere med mongo. Specifikationerne for installation af mongo-udvidelsen kan findes i PHP-dokumentationen .

Derefter bliver du nødt til at redigere php.ini-filerne for platformene (apache/cli/nginx) for at indlæse udvidelsen. Jeg tilføjede følgende før Modulindstillinger

extension=mongo.so

Det siger sig selv, at du skal genstarte apache/nginx efter at have ændret konfigurationen.

Konfiguration af Lumen

I din rodlumen-mappe kan du tilføje den til dine krav med følgende kommando.

composer require jenssegers/mongodb

Derfra skal du også indlæse MongodbServiceProvider før Facader eller Eloquent initialiseres.

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

$app->withFacades();

$app->withEloquent();

For at lette organiseringen af ​​konfigurationen oprettede jeg også en config-mappe og en database.php-konfigurationsfil. Da Lumen ikke forsøger at autoloade eller søge i denne mappe, er vi nødt til at bede den om at indlæse denne konfiguration. Jeg satte følgende linje lige før indlæsning af applikationsruterne.

$app->configure('database');

I database.php kræver mongodb-driveren en specifik struktur. Jeg har inkluderet mysql her, da jeg bruger begge dele, men hvis du udelukkende bruger mongo, kan du ændre standard til mongodb og fjerne 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 ude af vejen kan du nu oprette en model, mens du skriver dette for at oprette en model til mongo (tjek github-siden), kan du bruge følgende som base. Du kan ignorere $connection-variablen, hvis mongo er din standarddriver.

<?php

namespace App;

use Jenssegers\Mongodb\Model as Eloquent;

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

Der går du, du burde være i stand til at interagere med mongo normalt, for driverens detaljer, tjek github-siden for dokumentation om det.

Hvis dette svar hjalp dig, kunne du så markere det som svaret?



  1. Mongoose:hvordan indstiller man et skemafelt til at være ID?

  2. MongoDB 4.0 JREundtagelse:"Markør"-indstillingen er påkrævet, undtagen for aggregering med forklare-argumentet

  3. Spring data mongodb fjerner en egenskab fra et dokument ved hjælp af MongoTemplate

  4. Hvordan bruger StackExchange.Redis flere endepunkter og forbindelser?