neutron / mongo-odm-silex-provider
MongoODM Silex 服务提供者
0.1.3
2014-04-18 08:37 UTC
Requires
- php: >=5.3.2
- doctrine/mongodb-odm: >=1.0.0-beta4
Requires (Dev)
- silex/silex: ~1.0
This package is auto-updated.
Last update: 2024-08-25 05:49:49 UTC
README
此Silex服务提供者可在您的Silex应用程序中提供Doctrine MongoDB ODM服务。
此提供者由Justin Hileman和Florian Klein开发。
这两个项目似乎都已经不再维护,因此这里提供了一个维护版本,兼容Doctrine MongoDB ODM >= 1.0.0-beta4。
享受吧
用法
Composer
在您的composer.json
中添加此库的require条目。
{ "require": { "neutron/mongo-odm-silex-provider": "*" } }
然后运行composer install
(或update
)以下载所有文件,解决依赖并更新autoloading.php文件。
注册
您可以使用以下方式注册MongoDB ODM提供者:
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: // https://php.ac.cn/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 }), ));
配置
如果您使用默认值,则可以省略上述配置参数。
doctrine.odm.mongodb.documents
:文档管理注册。此选项将在下一段中解释。doctrine.odm.mongodb.proxies_dir
:Doctrine生成的代理类的目录。doctrine.odm.mongodb.proxies_namespace
:Doctrine生成的代理类的命名空间。doctrine.odm.mongodb.hydrators_dir
:Doctrine生成的 hydrator 类的目录。doctrine.odm.mongodb.hydrators_namespace
:Doctrine生成的 hydrator 类的命名空间。doctrine.odm.mongodb.metadata_cache
:用作缓存系统的类实例。您可以将它更改为\Doctrine\Common\Cache\ApcCache()
以使用APC缓存系统。doctrine.odm.mongodb.logger_callable
:用于日志的可调用对象,必须使用 $app->protect() 包装函数,以防止它们被Pimple解释。
文档注册
您需要注册不同的文档命名空间,以便使用Doctrine ODM,例如
$app->register(new MongoDBODMServiceProvider(), array( // ... 'doctrine.odm.mongodb.documents' => array( 0 => array( 'type' => 'annotation', 'path' => array( 'src/Acme/Entities', ), 'namespace' => 'Acme/Entities', 'alias' => 'docs', ), ), // ... ));
您可以添加多个文件夹/命名空间。
用法
在MongoDB中添加信息
// 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(); // ... });
从MongoDB中检索信息
$app->get('/demo/list', function () use ($app) { // ... $demos = $app['doctrine.odm.mongodb.dm'] ->getRepository('Acme\\Document\\Demo') ->findAll(); // ... });
如果您已定义别名,则可以使用它
$app['doctrine.odm.mongodb.dm']->getRepository('docs:Demo');
创建控制台
有时使用控制台管理Doctrine ODM非常有用。您可以通过以下方式配置您的控制台以使用它:
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(), ));
许可证
在MIT许可证下发布