cakedc/cakephp-oracle-driver

CakePHP 3 Oracle 数据库驱动程序

安装次数: 21,929

依赖关系: 0

建议者: 0

安全: 0

星标: 40

关注者: 11

分支: 24

类型:cakephp-plugin

5.0.0 2020-03-19 12:06 UTC

README

Downloads Latest Version

版本和分支

安装

您可以使用 Composer 将此插件安装到您的 CakePHP 应用程序中。

安装 Composer 包的推荐方法

composer require cakedc/cakephp-oracle-driver

确保在您的 src/Application.php 文件中已加载 Oracle 插件

    /**
     * {@inheritdoc}
     */
    public function bootstrap()
    {
        parent::bootstrap();

        $this->addPlugin(\CakeDC\OracleDriver\Plugin::class, ['bootstrap' => true]);
    }

需求

  • CakePHP 4.0+
  • Oracle PHP 扩展
    • OCI8(PHP 扩展,使用 PHP 构建)
    • PDO_OCI(PHP 扩展,使用 PHP 构建)

关于扩展的说明

为了完整支持,建议尽可能运行 OCI8 扩展。

虽然 PDO_OCI 可能更容易设置,但存在一些限制(例如,它不支持存储代码层,因此只能使用 SQL 层)。

数据源配置

以下是一个示例数据源配置

        <?php
return [
    'Datasources' => [
        'default' => [
            'className' => 'CakeDC\OracleDriver\Database\OracleConnection',
            'driver' => 'CakeDC\OracleDriver\Database\Driver\OracleOCI', # For OCI8
            #'driver' => 'CakeDC\\OracleDriver\\Database\\Driver\\OraclePDO', # For PDO_OCI
            'persistent' => true,           // Database persistent connection between http requests
            'host' => 'oracle11g',          // Database host name or IP address
            //'port' => 'nonstandard_port', // Database port number (default: 1521)
            'username' => 'blogs',          // Database username
            'password' => 'password',       // Database password
            'database' => 'XE',             // Database name (maps to Oracle's `SERVICE_NAME`)
            'sid' => '',                    // Database System ID (maps to Oracle's `SID`)
            'instance' => '',               // Database instance name (maps to Oracle's `INSTANCE_NAME`)
            'pooled' => '',                 // Database pooling (maps to Oracle's `SERVER=POOLED`)
            'flags' => [],                  // Database low level parameters for OCI or PDO connection. Auto-generated by default
            'encoding' => '',               // Database charset (default same as database charset)
            'init' => [],                   // Array of queries executed at connection
            'cacheMetadata' => true,        // Enable cakephp schema caching
            'server_version' => 12,        // Oracle server numeric version ex.: 11,12,19
            'autoincrement' => true,        // Enable autoincrement insteadof custom triggers in case of oracle 12+
        ]
    ]
];

对于 Oracle 12g,应使用配置设置 server_version 的值为 12。如果版本大于或等于 12,则插件使用新的 Oracle 分页功能。

另外,如果自动递增设置为 true,则对于 fixtures 中的主键使用新的 Oracle 自增功能。

如你所见,需要将 classNamedriver 切换到 Oracle 特定的类。驱动程序将取决于您是否想使用 PDO。在这个例子中,数据库名称 "XE" 被定义为 Oracle 系统范围内的 tnsnames.ora 文件中的 SERVICE_NAME

上述数组格式被转换为 Oracle 的 Easy Connection Naming。您可以在 \CakeDC\OracleDriver\Database\Driver\OracleBase::getDSN() 中找到此逻辑。

文档

有关文档和教程,请参阅此存储库的 docs 目录。

路线图

  • 提供与 Phinx 基于迁移的完全兼容性
  • 提供与 Oracle 数据库版本 12 的兼容性
  • 将数据类型转换为返回数据库时的本地 PHP 类型 @todo 将待办事项复制到路线图

支持

有关错误和功能请求,请使用此存储库的 问题 部分。

还提供商业支持,有关更多信息,请联系我们

贡献

此存储库遵循 CakeDC 插件标准。如果您想为此插件贡献新功能、增强功能或错误修复,请阅读我们的 贡献指南 以获取详细说明。

许可证

版权所有 2016 - 2020 Cake 开发公司(CakeDC)。保留所有权利。

根据 MIT 许可证授权。包含在此存储库中的源代码的再分发必须保留每个文件中的版权声明。