如何在Apigility中为多个版本设置不同的数据库/数据库适配器?

时间:2015-01-27 15:43:27

标签: database rest zend-framework2 apigility

Apigility

  

DB-Connected服务允许[...]指定数据库适配器[...]

(参见文档中的REST Service Tutorial)。

“DB-Connected”服务提供Database Settings,可以分配适配器。每个适配器“知道”,使用哪些凭据以及连接哪个数据库。

我创建了“代码连接”REST服务,并希望版本V1V2使用单独的数据库。如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

为了使用多个DB适配器,只需要

  1. 在(global.php为通用设置(如driverlocal.php创建凭据)中创建适当的配置块 - 可以手动或通过Apugility GUI完成( Dashboard -> Database Adapters
  2. <强> global.php

    return array(
        'db' => array(
            'adapters' => array(
                'DB\\myapi_v1' => array(
                    'driver' => 'Pdo',
                    'driver_options' => array(
                        1002 => 'SET NAMES \'UTF8\'',
                    ),
                    'pdodriver' => 'mysql',
                ),
                'DB\\myapi_v2' => array(
                    ...
                ),
            ),
        ),
        ...
    );
    

    <强> local.php

    return array(
        'db' => array(
            'adapters' => array(
                'DB\\myproject_v1' => array(
                    'username' => 'root',
                    'password' => 'pwd',
                    'dbname' => 'myproject_v1',
                    'host' => 'localhost',
                ),
                'DB\\myproject_v2' => array(
                    ...
                ),
            ),
        ),
        ...
    );
    
    1. 设置此适配器而不是默认Zend\Db\Adapter\Adapter,例如使用ZfcBase\Mapper(此处是应用程序中的示例,其中适配器在工厂中为service类设置; service在此处是controller / {之间的层{1}}和resource):
    2. <强> [myproject的] /module/Portfolio/src/Portfolio/V1/Rest/Image/ImageServiceFactory.php

      DB mapper