korstiaan/droctrine-mongo

为 Drimple 添加 Doctrine MongoDB ODM 服务,以便在 Drupal 7.x 中使用。

dev-master 2012-09-05 17:53 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:36:52 UTC


README

为 Drimple 添加 Doctrine MongoDB ODM 服务,以便在 Drupal 7.x 中使用。

Build Status

要求

安装

安装 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 许可证。