Laravel框架连接Oracle数据库

一、PHP开启oci8

1.到官网下载oci8扩展(http://pecl.php.net/package/oci8
php_oci8.dll
php_oci8_11g.dll
php_oci8_12c.dll
三个拓展文件分别对应Oracle10g、11g、12g
将拓展文件复制到php文件夹里面的ext文件夹里面

2.配置php.ini
oci8.privileged_connect = On
extension=php_oci8_11g.dll
extension=php_pdo_oci.dll
去掉分号,然后重启服务(Apache or IIS)

3.查看是否开启
phpinfo();
phpinfo()

至此可以用oci_connect连接Oracle数据库,如下:

$conn = oci_connect('tjris', 'tjris', 'ORCL');
        if (!$conn) {
            $e = oci_error();
            print htmlentities($e['message']);
            exit;
        }else {
            echo "连接oracle成功!";
        }

二、composer 添加第三方的组件 yajra/laravel-oci8

1.安装 composer (https://getcomposer.org/Composer-Setup.exe
注意:composer命令需要到Laravel项目根目录运行

2.换源

composer config -g repo.packagist composer https://packagist.phpcomposer.com

3.查看Laravel安装

composer install

4.修改根目录的composer.json

“require-dev”: { …… “yajra/laravel-oci8”:”5.3.1”}
然后:composer?update

假如:”yajra/laravel-oci8”:”5.3.*”(不注明版本)
则运行:composer require yajra/laravel-oci8:”5.3.*”


三、使用第三方组件
1.修改在config文件夹下的database.php
修改:’default’ => env(‘DB_CONNECTION’, ‘oracle’),
增加如下:

'oracle' => [
            'driver'        => 'oracle',
            'tns'           => env('DB_TNS', ''),
            'host'          => env('DB_HOST', ''),
            'port'          => env('DB_PORT', '1521'),
            'database'      => env('DB_DATABASE', ''),
            'username'      => env('DB_USERNAME', ''),
            'password'      => env('DB_PASSWORD', ''),
            'charset'       => env('DB_CHARSET', 'AL32UTF8'),
            'prefix'        => env('DB_PREFIX', ''),
            'prefix_schema' => env('DB_SCHEMA_PREFIX', ''),
        ],

2.修改ConnectionFactory.php中的createConnector函数和createConnection函数
(文件在vendor/laravel/framework/src/illuminate/Database/Connectors/ConnectionFactory.php)

2.0 ConnectionFactory类引用以下声明
use Yajra\Oci8\Connectors\OracleConnector;
use Yajra\Oci8\Oci8Connection;

2.1createConnector函数:

case 'sqlsrv':
                return new SqlServerConnector;
            case 'oracle':
                return new OracleConnector;

2.2createConnection函数:

case 'sqlsrv':
                return new SqlServerConnection($connection, $database, $prefix, $config);
            case 'oracle':
                return new Oci8Connection($connection, $database, $prefix, $config);

2.3 修改config/app.php
在providers里面增加
Yajra\Oci8\Oci8ServiceProvider::class,

2.4 修改 processInsertGetId 函数
(在vendor/yajra/laravel-oci8/src/Oci8/Query/processors/OracleProcessor.php)

$statement->bindParam($parameter, $id, PDO::PARAM_STR, 20);//PDO::PARAM_STR 主键的 数据类型

至此已经完成了Laravel对Oracle的支持配置

四、测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值