misuoka/think-oracle
Composer 安装命令:
composer require misuoka/think-oracle
包简介
用于 thinkphp6 框架上的基于 OCI 的 Oracle 数据库驱动。thinkphp5.1 请使用 1.0 版本
README 文档
README
用于 thinkphp6 框架上的基于 OCI 的 Oracle 数据库驱动。
由于官方很久没有对 PDO_OCI 更新了,其驱动源码默认不支持 Oracle 11g 及以上版本的数据库,当然也可在编译前修改 config.m4 文件使之支持。但安装之后,PDO_OCI 使用中却存在问题,如果数据库中存储中文,查询后会出现字符截断,无法得到预期的结果。
本库使用基于 OCI API 封装的 PDO 接口数据库驱动 misuoka\ocipdo,用来对 Oracle 数据库进行操作。
根据 Oracle 数据库的特性,对 thinkphp6 的数据库访问层进行稍作修改,使之适用于 Oracle 数据库,以便在 thinkphp6 框架中以其原有方式完美操作 Oracle 数据库。如果你使用的是 thinkphp5.1 框架,请安装 1.x.x 版本。
有关 PDO_OCI 字符截断问题的链接:https://my.oschina.net/startphp/blog/195333
使用方法
使用 composer 进行安装 composer require misuoka/think-oracle
安装完成后,在 thinkphp6 的数据库配置文件 database.php 中,进行如下配置:
$config = [ // 数据库连接配置信息 'connections' => [ 'oracle' => [ // 数据库类型 'type' => '\misuoka\think\Oracle', // 服务器地址 'hostname' => '', // 填写数据库 IP 地址 // 数据库名 'database' => '', // 数据库实例 SID 名称,如 ORCL // 用户名 'username' => '', // 用户名 // 密码 'password' => '', // 密码 // 端口 'hostport' => '', // 端口号,如 1521 // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 自增序列名前缀(新增的,针对 Oracle 特有的),除前缀外,名称与表名一致。如果不是,请在新增数据时使用 sequence 方法设置序列 'prefix_sequence' => '', ], ], ];
配置完成后,即可在PHP业务代码中,按 thinkphp6 官方开发手册的方法使用。
变更之处
- 由官方的 PDO 驱动连接变更为 misuoka\ocipdo 驱动连接
- 更改对 Oracle 存储过程调用的判断
- 获取 LastInserID 的修改
- 增加了序列名的自动获取,如果用户配置了序列前缀,则根据规则(序列前缀 + 去掉表前缀的表名)自动获取序列名称,如果存在则返回序列名
- 如果用户查询设置了返回自增ID,但又不显示填写序列名并且自动获取序列名失败,则结果返回 -1
- 去掉 REPLACE 功能,Oracle 没有该用法
- 修改 insertAll 方法,使之适用于 Oracle 的批量插入
- 对数据表及字段都转大写后加
",避免遇到系统关键字,导致 SQL 处理错误。如:用户ID为UID,如果删除时(DELETE TB_USER WHERE UID < 100)UID不加上双引号,这会导致全部数据被删除,经过处理后的语句(DELETE "TB_USER" WHERE "UID" < 100)只会删除 UID 小于100的数据。
thinkphp5.1 上安装方式
使用 composer 进行安装 composer require misuoka/think-oracle 1.x
安装完成后,在 thinkphp6 的数据库配置文件 database.php 中,进行如下配置:
$config = [ // 数据库类型 'type' => '\misuoka\think\Oracle', // Query类 'query' => '\misuoka\think\Query', // 如果是在 database.php 中配置,不需要填写此项,但如果是这种用法 Db::connect($config),请填写此项 // 服务器地址 'hostname' => '', // 填写数据库 IP 地址 // 数据库名 'database' => '', // 数据库实例名称,如 ORCL // 用户名 'username' => '', // 用户名 // 密码 'password' => '', // 密码 // 端口 'hostport' => '', // 端口号,如 1521 // 连接dsn 'dsn' => '', // 不填写,如果填写,则数据库连接将以此为连接串,将忽略除账号密码外的参数 // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 自增序列名前缀(新增的,针对 Oracle 特有的),除前缀外,名称与表名一致。如果不是,请在新增数据时使用 sequence 设置序列 'prefix_sequence' => '', ];
配置完成后,即可在PHP业务代码中,按 thinkphp5.1 官方开发手册的方法使用。
misuoka/think-oracle 适用场景与选型建议
misuoka/think-oracle 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 852 次下载、GitHub Stars 达 18, 最近一次更新时间为 2019 年 04 月 25 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「pdo」 「oracle」 「pdo_oci」 「thinkphp」 「oci」 「thihnkphp5」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 misuoka/think-oracle 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 misuoka/think-oracle 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 misuoka/think-oracle 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Dibi is Database Abstraction Library for PHP
Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.
oracle per progetti Fifree2
The lightweight PHP database framework to accelerate development
Mapper for accessing resources in KWCMS
基于 OCI API 封装的 Oracle PDO 数据库驱动
统计信息
- 总下载量: 852
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 19
- 点击次数: 8
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-04-25