Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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 Yii2:如何指定多个数据库模式?_Php_Postgresql_Yii2_Database Schema_Yii2 Advanced App - Fatal编程技术网

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

Php Yii2:如何指定多个数据库模式?,php,postgresql,yii2,database-schema,yii2-advanced-app,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' =>

我在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',
        ],
    ],
];

您可以在组件中配置多个

      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;  

对于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
                ]
              ],
          ],

      ],
  ];

您可以在组件中配置多个

      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;  

对于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
                ]
              ],
          ],

      ],
  ];

没有必要改变它:

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

无需更改:

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

在哪里可以指定名为laboratory的新模式?在MySQL中,模式在物理上与数据库同义。因此,您尝试使用与数据库相关的名称..它是一个PostgreSQL数据库。不管怎样,我尝试了你的MySQL解决方案,但没有效果。我没有两个数据库。也许您的解决方案适用于两个数据库。我有一个带有两个模式的PostgreSQL数据库。我可以在哪里指定名为laboratory的新模式?在MySQL中,模式在物理上是数据库的同义词。因此,您尝试使用与数据库相关的名称..它是一个PostgreSQL数据库。不管怎样,我尝试了你的MySQL解决方案,但没有效果。我没有两个数据库。也许您的解决方案适用于两个数据库。我有一个带有两个模式的PostgreSQL数据库。