Postgresql 如何在Yii2中设置默认模式

Postgresql 如何在Yii2中设置默认模式,postgresql,migration,database-schema,yii2,search-path,Postgresql,Migration,Database Schema,Yii2,Search Path,我的Yii2是用PostgreSQL设置的。我喜欢为每个项目使用模式,而不是为每个项目使用单独的数据库。后面的安装程序的问题是,我不知道如何通过配置选择默认模式“defaultSchema” 我对migrations表有问题,因为在运行migration命令时,它默认为“public”模式。默认的“公共”模式还阻止使用数据库用户的搜索路径。虽然我使用“search_path=myschema,public”设置了我的db用户,但在没有额外配置的情况下,我仍然不能使用迁移,因为在运行时,Yii会在

我的Yii2是用PostgreSQL设置的。我喜欢为每个项目使用模式,而不是为每个项目使用单独的数据库。后面的安装程序的问题是,我不知道如何通过配置选择默认模式“defaultSchema”

我对migrations表有问题,因为在运行migration命令时,它默认为“public”模式。默认的“公共”模式还阻止使用数据库用户的搜索路径。虽然我使用“search_path=myschema,public”设置了我的db用户,但在没有额外配置的情况下,我仍然不能使用迁移,因为在运行时,Yii会在表名中查找模式,如果没有提供,则会返回到defaultSchema,因此无论数据库用户的search_路径中有什么,它都会使用“公共迁移”


在Yi2中设置默认模式的最佳方法是什么?是否有任何为模式选择指定的配置参数?毕竟,每个连接都将使用一个模式,最好通过连接配置来设置它。

尝试使用db.php的这个变体来指定defaultSchema

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'pgsql:host=localhost;dbname=db_name', 
    'username' => 'db_username',
    'password' => 'db_password',
    'charset' => 'utf8',
    'schemaMap' => [
      'pgsql'=> [
        'class'=>'yii\db\pgsql\Schema',
        'defaultSchema' => 'public' //specify your schema here
      ]
    ], // PostgreSQL
];

我找到了一种在配置中设置迁移表架构的方法。在配置中,使用架构添加迁移表:
'controllerMap'=>['migrate'=>['class'=>'yii\console\controllers\MigrateController','migrationTable'=>'myschema.migration',],],
这正是我想要的!谢谢@user1852788