Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带前缀的多个数据库_Php_Database_Doctrine Orm_Zend Framework2_Doctrine Odm - Fatal编程技术网

Php 带前缀的多个数据库

Php 带前缀的多个数据库,php,database,doctrine-orm,zend-framework2,doctrine-odm,Php,Database,Doctrine Orm,Zend Framework2,Doctrine Odm,我是Zend Framework 2的新手和条令开发人员。我无法找到下面描述的问题的答案 我正在为一个网站使用多个数据库。例如,有一个包含所有用户详细信息的用户数据库和一个包含统计信息的数据库。用户可能有统计信息,因此两个数据库之间存在关系(约束)。对于以前的项目,我使用了一个配置文件和一个带有实体的类/目录(对于一个db) 如何在一个项目中使用具有正确表关系的多个数据库 如何/在何处存储数据库配置 如何/在何处存储实体 在同一个项目中,我使用多个版本的数据库(开发、测试、生产),因此我希望

我是Zend Framework 2的新手和条令开发人员。我无法找到下面描述的问题的答案

我正在为一个网站使用多个数据库。例如,有一个包含所有用户详细信息的用户数据库和一个包含统计信息的数据库。用户可能有统计信息,因此两个数据库之间存在关系(约束)。对于以前的项目,我使用了一个配置文件和一个带有实体的类/目录(对于一个db)

  • 如何在一个项目中使用具有正确表关系的多个数据库
  • 如何/在何处存储数据库配置
  • 如何/在何处存储实体
在同一个项目中,我使用多个版本的数据库(开发、测试、生产),因此我希望使用前缀作为数据库名称。例如dev\u用户和tst\u用户。 我想我应该使用配置文件中的前缀,并在某个地方使用它作为数据库的前缀

  • 我应该如何为所有数据库添加前缀
最后,我真的很好奇,当有多个模块在使用数据库实体时,其他人是如何使用它们的。

  • 如何在一个项目中使用具有正确表关系的多个数据库
条令对每个数据库连接使用一个实体管理器。因此,您可以连接到多个数据库,但不能链接这些实体。从条令或数据库中对实体施加约束的唯一方法是,如果实体在同一数据库中

但是,您可以自己实施约束,并使用两个单独的实体管理器 但是我不推荐这个

  • 如何/在何处存储数据库配置
数据库连接详细信息应存储在
/config/autoload/local.php
/config/autoload/{ownname}.local.php
中,例如,对于ownname,您可以选择“原则”

doctor.local.php

<?php

return array(
    'doctrine' => array(
        'connection' => array(
            'orm_default' => array(
                'configuration' => 'orm_default',
                'driverClass' =>'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'eventmanager' => 'orm_default',
                'params' => array(
                    'host' => 'localhost',
                    'port' => '3306',
                    'user' => '{username}',
                    'password' => '{password}',
                    'dbname' => '{db}',
                ),
            ),
        ),
    ),
);

这就是我现在使用的配置。它不适用于多个数据库,因为{db}仅为一个数据库设置。如果你创建一个抽象工厂,你可以在servicemanager中为你的服务添加前缀,并从你提供的配置中创建尽可能多的适配器