Всъщност използваме Lumen, Laravel, Mongo и MySQL в един гигантски проект, така че мога да ви помогна в този. Ако приемем, че искате да използвате MongoDB с eloquent вместо със суровия MongoClient. Можете да намерите библиотеката, която използвам от jenssegers тук .
Инсталирайте разширението MongoDB
Първо ще трябва да инсталирате зависимостите, за да може PHP да взаимодейства с mongo. Спецификите за инсталиране на разширението mongo могат да бъдат намерени в PHP документация .
След това ще трябва да редактирате php.ini файловете за платформите (apache/cli/nginx), за да заредите разширението. Добавих следното преди Настройки на модул
extension=mongo.so
От само себе си се разбира, че трябва да рестартирате apache/nginx след промяна на конфигурацията.
Конфигуриране на Lumen
Във вашата основна папка lumen можете да го добавите към вашите изисквания със следната команда.
composer require jenssegers/mongodb
Оттам ще трябва да заредите и MongodbServiceProvider before Facades или Eloquent се инициализира.
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class);
$app->withFacades();
$app->withEloquent();
За опростяване на организирането на конфигурацията създадох също конфигурационна папка и конфигурационен файл database.php. Тъй като Lumen не се опитва да зарежда автоматично или да търси в тази директория, трябва да му кажем да зареди тази конфигурация. Поставям следния ред точно преди зареждането на маршрутите на приложението.
$app->configure('database');
В database.php драйверът на mongodb изисква специфична структура. Включих mysql тук, тъй като използвам и двете, но ако използвате изключително mongo, можете да промените по подразбиране на mongodb и да премахнете конфигурацията на mysql.
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
)
),
],
];
След като конфигурацията приключи, сега можете да създадете модел, като напишете това, за да създадете модел за mongo (проверете страницата на github), можете да използвате следното като основа. Можете да игнорирате променливата $connection, ако mongo е вашият драйвер по подразбиране.
<?php
namespace App;
use Jenssegers\Mongodb\Model as Eloquent;
class Example extends Eloquent
{
protected $connection = 'mongodb';
protected $collection = 'example';
protected $primaryKey = '_id';
}
Ето, трябва да можете да взаимодействате нормално с mongo, за спецификата на драйвера вижте страницата на github за документация за него.
Ако този отговор ви помогна, можете ли да го маркирате като отговор?