Yii2:如何指定多个数据库模式?

时间:2017-11-10 18:09:39

标签: php postgresql yii2 database-schema yii2-advanced-app

我在Yii2应用程序中使用PostgreSQL和默认数据库模式。

我创建了一个名为 laboratory 的新架构,我需要在common / config / main-local.php文件中定义它。

这是我当前的 main-local.php 文件:

<?php
return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'pgsql:host=localhost;dbname=travel',
            'username' => 'aaaa',
            'password' => 'bbbb',
            'charset' => 'utf8',
        ],
    ],
];

如何在此文件中添加实验室架构?我需要这两种模式。

Yii2是否支持多个模式?

2 个答案:

答案 0 :(得分:1)

您可以在组件中配置多个

      return [
      'components' => [
          'db1' => [
              'class' => 'yii\db\Connection',
              'dsn' => 'mysql:host=localhost;dbname=testdb1',
              'username' => 'demo1',
              'password' => 'demo1',
          ],
          'db2' => [
              'class' => 'yii\db\Connection',
              'dsn' => 'mysql:host=localhost;dbname=testdb2',
              'username' => 'demo2',
              'password' => 'demo2',
          ],

      ],
  ];

你可以使用

来引用每一个
 \Yii::$app->db1;  

 or 

  \Yii::$app->db2;  

http://www.yiiframework.com/doc-2.0/guide-db-active-record.html

http://www.yiiframework.com/doc-2.0/guide-start-databases.html

对于postgresql你可以尝试

      return [
      'components' => [
          'db1' => [
              'class' => 'yii\db\Connection',
              'dsn' => 'pgsql:host=localhost;dbname=testdb1',
              'username' => 'demo1',
              'password' => 'demo1',
              'schemaMap' => [
                'pgsql'=> [
                  'class'=>'yii\db\pgsql\Schema',
                  'defaultSchema' => 'your_schema1' //specify your schema here
                ]
              ],
          ],
          'db2' => [
              'class' => 'yii\db\Connection',
              'dsn' => 'mysql:host=localhost;dbname=testdb2',
              'username' => 'demo2',
              'password' => 'demo2',
              'schemaMap' => [
                'pgsql'=> [
                  'class'=>'yii\db\pgsql\Schema',
                  'defaultSchema' => 'your_schema2' //specify your schema here
                ]
              ],
          ],

      ],
  ];

答案 1 :(得分:0)

没有必要改变它:

<?php
return [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'pgsql:host=localhost;dbname=travel',
            'username' => 'aaaa',
            'password' => 'bbbb',
            'charset' => 'utf8',
        ],
    ],
];

然后Gii代码生成器识别实验室架构(但表名的自动完成功能不起作用)。