sql >> Databáze >  >> NoSQL >> MongoDB

Lumen a MongoDB?

Ve skutečnosti používáme Lumen, Laravel, Mongo a MySQL v jednom obřím projektu, takže vám mohu pomoci s tímto projektem. Za předpokladu, že chcete použít MongoDB s výmluvným namísto se syrovým MongoClientem. Knihovnu, kterou používám od jenssegers, najdete zde .

Nainstalujte rozšíření MongoDB

Nejprve budete muset nainstalovat závislosti pro PHP, abyste mohli komunikovat s mongo. Podrobnosti o instalaci rozšíření mongo lze nalézt v dokumentaci PHP .

Poté budete muset upravit soubory php.ini pro platformy (apache/cli/nginx), aby se rozšíření načetlo. Před Nastavení modulu jsem přidal následující

extension=mongo.so

Je samozřejmé, že po změně konfigurace musíte restartovat apache/nginx.

Konfigurace Lumen

Ve vaší kořenové složce lumen jej můžete přidat do svých požadavků pomocí následujícího příkazu.

composer require jenssegers/mongodb

Odtud budete muset také načíst MongodbServiceProvider před Fasády nebo Eloquent se inicializují.

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

$app->withFacades();

$app->withEloquent();

Pro jednoduchost organizace konfigurace jsem také vytvořil konfigurační složku a konfigurační soubor database.php. Protože se Lumen nepokouší tento adresář automaticky načíst nebo prohledat, musíme mu říci, aby načetl tuto konfiguraci. Následující řádek jsem umístil těsně před načítáním aplikačních tras.

$app->configure('database');

V database.php vyžaduje ovladač mongodb specifickou strukturu. Zahrnul jsem sem mysql, protože používám obojí, ale pokud používáte výhradně mongo, můžete změnit výchozí nastavení na mongodb a odstranit konfiguraci 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
            )
        ),

    ],
];

S konfigurací mimo způsob, jak nyní můžete vytvořit model, od psaní tohoto pro vytvoření modelu pro mongo (podívejte se na stránku github) můžete jako základ použít následující. Pokud je vaším výchozím ovladačem mongo, můžete proměnnou $connection ignorovat.

<?php

namespace App;

use Jenssegers\Mongodb\Model as Eloquent;

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

Tady to máte, měli byste být schopni normálně komunikovat s mongo, podrobnosti o ovladači najdete na stránce github, kde najdete dokumentaci k němu.

Pokud vám tato odpověď pomohla, můžete ji označit jako odpověď?



  1. Jak vyhledat záznam a poté jej smazat

  2. Při nasazení do Heroku nelze najít modul mongoDB

  3. Rychlé stránkování s MongoDB

  4. Mongoose Pre-Save Hook se spouští, ale neukládá další pole (NEPOUŽÍVÁTE model.update)