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?