korstiaan / droctrine-mongo
为 Drimple 添加 Doctrine MongoDB ODM 服务,以便在 Drupal 7.x 中使用。
dev-master
2012-09-05 17:53 UTC
Requires
- php: >=5.3.3
- doctrine/mongodb-odm: dev-master
- korstiaan/drimple: *
Requires (Dev)
Suggests
- korstiaan/nsautoload: Autoloads your module's documents
This package is not auto-updated.
Last update: 2024-09-14 13:36:52 UTC
README
为 Drimple 添加 Doctrine MongoDB ODM 服务,以便在 Drupal 7.x 中使用。
要求
- Drupal 7.x
- PHP 5.3.3+
- Drimple
- Doctrine MongoDB ODM
安装
安装 Droctrine Mongo
的推荐方法是使用 Composer。只需在您的 composer.json
中添加以下内容:
{ "minimum-stability": "dev", "require": { ... "korstiaan/droctrine-mongo": "dev-master" } }
现在更新 composer 并安装新添加的要求及其依赖(包括 Drimple
)
$ php composer.phar update korstiaan/droctrine-mongo
使用 Composer
使用 Composer
意味着包括其自动加载器。将以下内容添加到您的 Drupal 设置.php 中:
// /path/to/sites/default/settings.php require '/path/to/vendor/autoload.php';
配置
实现 hook_hook_drimple_provide(\Drimple\Drimple $drimple)
并注册服务提供者。例如:
<?php // sites/all/modules/foo/foo.module function foo_drimple_provide(\Drimple\Drimple $drimple) { $drimple->register( new \Droctrine\Mongo\Provider\DoctrineMongoDBProvider(), array( 'doctrine.odm.mongodb.config.connection' => array( 'connections' => array( 'default' => array( 'server' => 'mongodb://localhost:27017', 'options' => array( 'connect' => true, ), ), ), 'default' => 'default', ), 'doctrine.odm.mongodb.config.manager' => array( 'managers' => array( 'default' => array( 'auto_mapping' => true, ), ), 'config' => array( 'proxy_dir' => file_directory_temp(), 'hydrator_dir' => file_directory_temp(), 'database' => 'db_mongo', ), 'default' => 'default', ), ) ); }
实际上,这将向 doctrine.odm.mongodb.dm
服务添加默认管理器默认连接的文档管理器。
See `DoctrineMongoDBProvider::loadDocumentManagers` and `DoctrineMongoDBProvider::loadConnections` phpdocs for more configuration information and the other services it defines
使用方法
当在提供者的配置中设置 auto_mapping = true 时,文档将在每个模块的子目录 ModuleName/Document
中查找,命名空间为 ModuleName\Document
。 (模块的基本命名空间基于下划线到驼峰式的转换)
<?php // sites/all/modules/foo_bar/FooBar/Document/User.php namespace FooBar\Document; use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB; /** * @MongoDB\Document */ class User { /** * @MongoDB\Id */ protected $id; }
现在如果您想持久化此文档,只需
$dm = drimple()->get('doctrine.odm.mongodb.dm'); $user = new \FooBar\Document\User(); $dm->persist($user); $dm->flush();
或者如果您想获取所有文档
$dm = drimple()->get('doctrine.odm.mongodb.dm'); $docs = $dm->getRepository('FooBar\\Document\\User')->findAll();
限制
- 目前只支持注解驱动程序。
许可
Droctrine Mongo 使用 MIT 许可证。