2017 © Pedro Peláez
 

library mongo-odm-silex-provider

MongoODM Silex service provider

image

neutron/mongo-odm-silex-provider

MongoODM Silex service provider

  • Friday, April 18, 2014
  • by romain
  • Repository
  • 3 Watchers
  • 37 Stars
  • 13,433 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 17 Forks
  • 4 Open issues
  • 5 Versions
  • 2 % Grown

The README.md

MongoDB ODM Silex Service Provider

Build Status, (*1)

This Silex service provider provides Doctrine MongoDB ODM service in your Silex Application., (*2)

This provider has been developed by Justin Hileman and Florian Klein, (*3)

It seems that both of these projects are not maintained anymore, so here comes the maintained version, compatible with Doctrine MongoDB ODM >= 1.0.0-beta4., (*4)

Enjoy, (*5)

Usage

Composer

Add in your composer.json the require entry for this library., (*6)

{
    "require": {
        "neutron/mongo-odm-silex-provider": "*"
    }
}

and run composer install (or update) to download all files, resolve dependencies and update the autoloading.php file., (*7)

Registering

You can register MongoDB ODM Provider using:, (*8)

use Neutron\Silex\Provider\MongoDBODMServiceProvider;

// ...

$app->register(new MongoDBODMServiceProvider(), array(
    'doctrine.odm.mongodb.connection_options' => array(
        'database' => 'MONGODB_DB',

        // connection string:
        // mongodb://[username:password@]host1[:port1][,host2[:port2:],...]/db
        'host'     => 'MONGODB_SERVER',

        // connection options as described here:
        // http://www.php.net/manual/en/mongoclient.construct.php
        'options'  => array('fsync' => false)
    ),
    'doctrine.odm.mongodb.documents'               => array(),
    'doctrine.odm.mongodb.proxies_dir'             => 'cache/doctrine/odm/mongodb/Proxy',
    'doctrine.odm.mongodb.proxies_namespace'       => 'DoctrineMongoDBProxy',
    'doctrine.odm.mongodb.auto_generate_proxies'   => true,
    'doctrine.odm.mongodb.hydrators_dir'           => 'cache/doctrine/odm/mongodb/Hydrator',
    'doctrine.odm.mongodb.hydrators_namespace'     => 'DoctrineMongoDBHydrator',
    'doctrine.odm.mongodb.auto_generate_hydrators' => true,
    'doctrine.odm.mongodb.metadata_cache'          => new \Doctrine\Common\Cache\ArrayCache(),
    'doctrine.odm.mongodb.logger_callable'         => $app->protect(function($query) {
                                                          // log your query
                                                      }),
));

Configuration

The configuration params listed above can be omitted if you use the default values., (*9)

  • doctrine.odm.mongodb.documents: document management registration. This option will be explaned in the next praragraph.
  • doctrine.odm.mongodb.proxies_dir: directory for proxy classes generated by Doctrine.
  • doctrine.odm.mongodb.proxies_namespace: namespace for proxy classes generated by Doctrine.
  • doctrine.odm.mongodb.hydrators_dir: directory for hydrators classes generated by Doctrine.
  • doctrine.odm.mongodb.hydrators_namespace: namespace for hydrators classes generated by Doctrine.
  • doctrine.odm.mongodb.metadata_cache: instace of class to use as caching system. Maybe you can change to \Doctrine\Common\Cache\ApcCache() to use APC caching system.
  • doctrine.odm.mongodb.logger_callable: Callable used for logging, must wrap functions using $app->protect() to prevent from them being interpreted by Pimple

Document registration

You need to register the differents documents namespace to make possible use it with Doctrine ODM, eg:, (*10)

$app->register(new MongoDBODMServiceProvider(), array(
    // ...
    'doctrine.odm.mongodb.documents' => array(
        0 => array(
            'type' => 'annotation',
            'path' => array(
                'src/Acme/Entities',
            ),
            'namespace' => 'Acme/Entities',
            'alias'     => 'docs',
        ),
    ),
    // ...
));

you can add multiple folders/namespaces., (*11)

Usage

Add information in MongoDB:, (*12)

// Define routing
$app->post('/demo/add', function () use ($app) {
  // ...
  $demo = new \Acme\Document\Demo();
  $demo->setTitle('Test');
  $demo->setBody('This is a demo document.');

  $app['doctrine.odm.mongodb.dm']->persist($demo);
  $app['doctrine.odm.mongodb.dm']->flush();

  // ...
});

Retrieve information from MongoDB:, (*13)

``` php $app->get('/demo/list', function () use ($app) { // ... $demos = $app['doctrine.odm.mongodb.dm'] ->getRepository('Acme\Document\Demo') ->findAll();, (*14)

// ... });, (*15)


if you have defined an alias, you can use it: ```php $app['doctrine.odm.mongodb.dm']->getRepository('docs:Demo');

Creating console

Sometime can be usefull have console to manage your Doctrine ODM. You can configure your console to use it with:, (*16)

use Symfony\Component\Console\Application;
// .. other class to import
use Doctrine\ODM\MongoDB\Tools\Console\Helper\DocumentManagerHelper;

$console = new Application('Acme Application', '1.0');

// Other commands

// This make possibile to re-use default Doctrine console command
$dm = new DocumentManagerHelper($app['doctrine.odm.mongodb.dm']);
$console->getHelperSet()->set($dm, 'dm');

// Add Doctrine ODM commands
$console->addCommands(array(
    new Doctrine\ODM\MongoDB\Tools\Console\Command\GenerateDocumentsCommand(),
    new Doctrine\ODM\MongoDB\Tools\Console\Command\GenerateHydratorsCommand(),
    new Doctrine\ODM\MongoDB\Tools\Console\Command\GenerateProxiesCommand(),
    new Doctrine\ODM\MongoDB\Tools\Console\Command\GenerateRepositoriesCommand(),
    new Doctrine\ODM\MongoDB\Tools\Console\Command\QueryCommand(),
    new Doctrine\ODM\MongoDB\Tools\Console\Command\ClearCache\MetadataCommand(),
));

License

Released under the MIT license, (*17)

The Versions

18/04 2014

dev-master

9999999-dev

MongoODM Silex service provider

  Sources   Download

MIT

The Requires

 

The Development Requires

silex doctrine odm

18/04 2014

0.1.3

0.1.3.0

MongoODM Silex service provider

  Sources   Download

MIT

The Requires

 

The Development Requires

silex doctrine odm

31/03 2014

0.1.2

0.1.2.0

MongoODM Silex service provider

  Sources   Download

MIT

The Requires

 

The Development Requires

silex doctrine odm

12/04 2013

0.1.1

0.1.1.0

MongoODM Silex service provider

  Sources   Download

MIT

The Requires

 

The Development Requires

silex doctrine odm

07/02 2013

0.1.0

0.1.0.0

MongoODM Silex service provider

  Sources   Download

MIT

The Requires

 

The Development Requires

silex doctrine odm