sql >> Database >  >> NoSQL >> MongoDB

Lumen en MongoDB?

We gebruiken Lumen, Laravel, Mongo en MySQL in één gigantisch project, dus ik kan je hierbij helpen. Ervan uitgaande dat u MongoDB met welsprekend wilt gebruiken in plaats van met de onbewerkte MongoClient. Je kunt de bibliotheek die ik gebruik van jenssegers hier vinden .

MongoDB-extensie installeren

Ten eerste moet je de afhankelijkheden voor PHP installeren om met mongo te kunnen communiceren. De details voor het installeren van de mongo-extensie zijn te vinden in de PHP-documentatie .

Daarna moet je de php.ini-bestanden voor de platforms (apache/cli/nginx) bewerken om de extensie te laden. Ik heb het volgende toegevoegd vóór Module-instellingen

extension=mongo.so

Het spreekt voor zich dat je apache/nginx opnieuw moet opstarten nadat je de configuratie hebt gewijzigd.

Lumen configureren

In uw root lumen-map kunt u het met de volgende opdracht aan uw vereisten toevoegen.

composer require jenssegers/mongodb

Van daaruit moet je ook de MongodbServiceProvider voor . laden Gevels of Welsprekend wordt geïnitialiseerd.

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

$app->withFacades();

$app->withEloquent();

Om de configuratie eenvoudig te organiseren, heb ik ook een configuratiemap en een database.php-configuratiebestand gemaakt. Aangezien Lumen deze map niet automatisch probeert te laden of te doorzoeken, moeten we hem vertellen om deze configuratie te laden. Ik plaats de volgende regel vlak voor het laden van de applicatieroutes.

$app->configure('database');

In database.php vereist de mongodb-driver een specifieke structuur. Ik heb mysql hierin opgenomen omdat ik beide gebruik, maar als je uitsluitend mongo gebruikt, kun je de standaardinstelling wijzigen in mongodb en de mysql-configuratie verwijderen.

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

    ],
];

Met de configuratie uit de weg kun je nu een model maken, vanaf het moment dat je dit schrijft om een ​​model voor mongo te maken (kijk op de github-pagina), kun je het volgende als basis gebruiken. U kunt de $connection-variabele negeren als mongo uw standaardstuurprogramma is.

<?php

namespace App;

use Jenssegers\Mongodb\Model as Eloquent;

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

Alsjeblieft, je zou normaal met mongo moeten kunnen communiceren, voor de details van het stuurprogramma kijk je op de github-pagina voor documentatie erover.

Als dit antwoord je heeft geholpen, zou je het dan als antwoord kunnen markeren?



  1. Hoe de min-waarde in mongodb te vinden

  2. MongoDB Group met Ruby-stuurprogramma

  3. Kan ik een onbewerkte MongoDB-query uitvoeren in node-mongodb-native driver?

  4. PouchDB gebruiken met MongoDB