如何在Yii2中设置默认模式
问题描述:
我的Yii2使用PostgreSQL进行设置。我不想为每个项目使用单独的数据库,而是喜欢为每个项目使用模式。稍后设置的问题是我无法弄清楚如何通过配置选择默认模式“defaultSchema”。如何在Yii2中设置默认模式
我遇到了迁移表的问题,因为它在运行迁移命令时默认为“公共”模式。默认的“公共”模式也阻止使用数据库用户的search_path。尽管我使用“search_path = myschema,public”设置了我的数据库用户,但我仍然无法在没有额外配置的情况下使用迁移,因为在运行期间,Yii会在表名称中查找模式,并且如果未提供,则会退回到defaultSchema,因此无论你在数据库用户的search_path中仍然会使用“public.migrations”。
在Yii2中设置默认模式的最佳方式是什么?是否有为模式选择指定的配置参数?毕竟每个连接都将使用一个模式,并且通过连接配置进行设置会很好。
答
尝试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
];
+0
这正是我一直在寻找的!谢谢@ user1852788 – hserge 2014-10-18 08:00:24
我已经找到一种方法如何设置迁移表架构的配置。在配置中添加迁移表,其中包含Schematic: ''controllerMap'=>'migrate'=>'''>'yii \ console \ controllers \ MigrateController', 'migrationTable'=>'myschema.migration ', ], ], ' – hserge 2014-10-18 07:51:20