0

PostgreSQL、Oracle 和许多其他 DBMS 使用 SCHEMA,所以,表名是

schema_name.table_name

但是 CakePHP 手册并没有说明这一点。CakePHP 默认值中的模型、视图和控制器名称怎么样?我可以使用前缀之类的解决方案,也就是说,在所有数据库操作中都将使用相同的模式名称。


PS1:请不要与方法 Modelschema混淆,以及有关访问此方法的问题。

PS2:Bill 的 2006 解决方案不是更好的解决方案,因为没有更新(我使用的是 CakePHP2),也不是“官方 cakePHP 解决方案”。

PS3:database.php 有一些架构属性吗?CakePHP 文档的链接是什么?

4

2 回答 2

1

对我来说好消息,有关于 SQL-Schema 的 CakePHP 2.0 文档...没有其他文档或示例,但是一个起点...

于 2012-11-19T18:55:17.133 回答
1

在 CakePHP 中你必须定义更多的数据库配置。

在 CakePHP 2 中:

  • 将“模式”参数设置为您的配置
  • 为您的所有架构创建新配置
  • 在模型中使用正确的模式

例如,数据库配置:

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 中也是这样,只是数据库是 config/app.php 并且你必须使用

use Cake\Datasource\ConnectionManager;
$connection = ConnectionManager::get('default');
于 2017-11-17T13:24:13.950 回答