MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Lumen и MongoDB?

Всъщност използваме 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 за документация за него.

Ако този отговор ви помогна, можете ли да го маркирате като отговор?



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да се справя с пресичането на масиви в find({})?

  2. mongodb филтърни документи с дължина, ширина и конкретно разстояние

  3. MongoDB регулярен израз с индексирано поле

  4. Какво е еквивалентът на findOne, използващ .aggregate в Mongodb?

  5. Как да премахнете само едно или две полета от документи в mongodb?