Php Yii2:如何指定多个数据库模式?
我在Yii2应用程序中使用PostgreSQL和默认数据库模式 我创建了一个名为laboratory的新模式,需要在common/config/main-local.php文件中定义它 这是我当前的main local.php文件: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' =>
<?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数据库。