我正在使用带有ODM和MongoDB的ZF2。当我尝试执行非常简单的任务时,例如:
/** @ODMDocument(collection="Test") */
class Test
{
...
}
我收到错误"需要登录"。好吧,我知道为什么这是一个问题,我可以通过以下方式解决它:
/** @ODMDocument(db="mongoDB", collection="Test") */
class Test
{
...
}
有没有办法从 .local/.global 配置文件中添加配置值,而不是在每个类中一直使用 db 声明,或者我可以重新配置配置选项吗?
谢谢。
通读这个关于使用 ZF2 实现 Doctrine 的有用教程。您应该将全局配置选项放在模块.php和配置/本地.php中。模块中的此数组键.php:
'doctrine' => array(
'driver' => array(
__NAMESPACE__ . '_driver' => array(
'class' => 'DoctrineORMMappingDriverAnnotationDriver',
'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' => 'DoctrineDBALDriverPDOMySqlDriver',
'params' => array(
'host' => 'localhost',
'port' => '3306',
'user' => '',
'password' => '',
'dbname' => 'zf2tutorial',
)
)
)
),
);
这将允许您避免数据库实体中的重复,允许您为每个类仅使用以下 Doctrine 声明:
/**
* A music album.
*
* @ORMEntity
* @ORMTable(name="album")
* @property string $artist
* @property string $title
* @property int $id
*/
class Album implements InputFilterAwareInterface {