2014-10-18 124 views
4

我的Yii2使用PostgreSQL進行設置。我不想爲每個項目使用單獨的數據庫,而是喜歡爲每個項目使用模式。稍後設置的問題是我無法弄清楚如何通過配置選擇默認模式「defaultSchema」。如何在Yii2中設置默認模式

我遇到了遷移表的問題,因爲它在運行遷移命令時默認爲「公共」模式。默認的「公共」模式也阻止使用數據庫用戶的search_path。儘管我使用「search_path = myschema,public」設置了我的數據庫用戶,但我仍然無法在沒有額外配置的情況下使用遷移,因爲在運行期間,Yii會在表名稱中查找模式,並且如果未提供,則會退回到defaultSchema,因此無論你在數據庫用戶的search_path中仍然會使用「public.migrations」。

在Yii2中設置默認模式的最佳方式是什麼?是否有爲模式選擇指定的配置參數?畢竟每個連接都將使用一個模式,並且通過連接配置進行設置會很好。

+0

我已經找到一種方法如何設置遷移表架構的配置。在配置中添加遷移表,其中包含Schematic: ''controllerMap'=>'migrate'=>'''>'yii \ console \ controllers \ MigrateController', 'migrationTable'=>'myschema.migration ', ], ], ' – hserge 2014-10-18 07:51:20

回答

12

嘗試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

相關問題