首先是上下文:敏捷性 https://apigility.org/驱动应用程序基于Zend 框架 2 http://framework.zend.com/。在第一个版本中(V1
)我正在使用ZfcBase https://github.com/ZF-Commons/ZfcBase DbMapper https://github.com/ZF-Commons/ZfcBase/blob/master/src/ZfcBase/Mapper/AbstractDbMapper.php对于模型层。现在我正在实施V2
with 学说2 http://www.doctrine-project.org/ as ORM.
Apigility 提供了版本之间的轻松切换,每个版本都可以使用自己的数据库适配器:
/config/autoload/global.php
/ /config/autoload/local.php
<?php
return array(
...
'db' => array(
'adapters' => array(
'DB\\myproject_v1' => array(
// settings (driver, hostname, database, driver_options)
// credentials (username, password)
...
),
'DB\\myproject_v2' => array(
// settings (driver, hostname, database, driver_options)
// credentials (username, password)
...
),
),
),
...
);
因此,要使用另一个版本作为默认版本并在其后面使用另一个数据库,只需更改 URL:
myproject.tld/my-endpoint <-- version set to default
myproject.tld/v1/my-endpoint <-- version 1
myproject.tld/v2/my-endpoint <-- version 2
我想将原则 2 添加到我的申请中,所以我扩展了我的local.php
like here https://github.com/doctrine/DoctrineORMModule/blob/master/README.md#connection-settings shown:
<?php
return array(
...
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
'params' => array(
// settings (host, port, dbname)
// credentials (user, password)
...
),
),
),
),
...
);
它正在工作,但现在我无法灵活地在版本之间切换/使用不同版本及其背后的不同数据库。我的适配器设置被学说连接配置覆盖或只是被忽略。
如何将 Doctrine 与 Apigility 的版本控制灵活性结合起来?如何使用 Doctrine 在 Apigility 应用程序中配置数据库连接并保持能够在版本之间切换/同时使用多个版本?