ZF2 ODM MongoDB “需要登录”


ZF2 ODM MongoDB "need to login"

我正在使用带有ODM和MongoDB的ZF2。当我尝试执行非常简单的任务时,例如:

/** @ODM'Document(collection="Test") */
class Test
{
   ...
}

我收到错误"需要登录"。好吧,我知道为什么这是一个问题,我可以通过以下方式解决它:

/** @ODM'Document(db="mongoDB", collection="Test") */
class Test
{
   ...
}

有没有办法从 .local/.global 配置文件中添加配置值,而不是在每个类中一直使用 db 声明,或者我可以重新配置配置选项吗?

谢谢。

通读这个关于使用 ZF2 实现 Doctrine 的有用教程。您应该将全局配置选项放在模块.php和配置/本地.php中。模块中的此数组键.php:

'doctrine' => array(
        'driver' => array(
            __NAMESPACE__ . '_driver' => array(
                'class' => 'Doctrine'ORM'Mapping'Driver'AnnotationDriver',
                'cache' => 'array',
                'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
            ),
            'orm_default' => array(
                'drivers' => array(
                    __NAMESPACE__ . ''Entity' => __NAMESPACE__ . '_driver'
                )
            )
        )
    )

而这些数据库连接参数在本地.php:

return array(
    // ...
    'doctrine' => array(
        'connection' => array(
            'orm_default' => array(
                'driverClass' => 'Doctrine'DBAL'Driver'PDOMySql'Driver',
                'params' => array(
                    'host'     => 'localhost',
                    'port'     => '3306',
                    'user'     => '',
                    'password' => '',
                    'dbname'   => 'zf2tutorial',
                )
            )
        )
    ),
);

这将允许您避免数据库实体中的重复,允许您为每个类仅使用以下 Doctrine 声明:

/**
 * A music album.
 *
 * @ORM'Entity
 * @ORM'Table(name="album")
 * @property string $artist
 * @property string $title
 * @property int $id
 */
class Album implements InputFilterAwareInterface {