2012-11-19 26 views
0

的PostgreSQL,Oracle和許多其他DBMS的使用架構,因此,表名是如何使用Cake在表名處設置表模式?

schema_name.table_name 

但CakePHP的說明書沒有說anithing這個問題。關於CakePHP默認的Model,View和Controller名稱呢?我可以使用前綴等解決方案,即在所有數據庫操作中都使用相同的模式名稱。


PS1:請不要與method Modelschema混淆,以及有關訪問該方法的問題。

PS2:Bill's 2006 solution不是更好的,因爲沒有更新(我正在使用CakePHP2),而不是「官方的CakePHP解決方案」。

PS3:database.php有一些schema屬性嗎? CakePHP文檔的鏈接是什麼?

+0

您指定架構在你的database.php中...或者你是否要求爲每個查詢選擇模式? – domsom

+0

那麼,我需要兩種解決方案,但第一個是一個好的開始......請參閱(編輯)PS3,我可以指定像前綴,類DATABASE_CONFIG {... $默認'架構'=>'MySCHEMA',。 ..''? –

回答

1

在CakePHP你必須定義多個數據庫的配置。

在CakePHP 2:

  • 設置 '模式' 參數去你的配置
  • 創造新CONFIGS您的所有模式的
  • 使用正確的模式在你的模型

例如,數據庫conf:

public $default = array(
     'datasource' => 'Database/Postgres', 
     'persistent' => false, 
     'host'  => 'localhost', 
     'login'  => 'my_db_user', 
     'password' => 'my_db_passw', 
     'database' => 'my_project_db', 
     'prefix'  => '', 
     'encoding' => 'utf8', 
     'schema'  => 'postgres' 
    ); 
public $other_schema = array(
     'datasource' => 'Database/Postgres', 
     'persistent' => false, 
     'host'  => 'localhost', 
     'login'  => 'my_db_user', 
     'password' => 'my_db_passw', 
     'database' => 'my_project_db', 
     'prefix'  => '', 
     'encoding' => 'utf8', 
     'schema'  => 'other_schema' 
    ); 

如果你想在一個模式中使用它:

class AppModel extends AppModel { 
    public $useDbConfig = 'other_schema'; 
} 

在CakePHP3方式是一樣的,只是有數據庫配置/ app.php,你必須使用

use Cake\Datasource\ConnectionManager; 
$connection = ConnectionManager::get('default'); 
相關問題