laravel5.8(十四)连接oracle数据库

159 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情

首先确定你的PHP已经支持oracle数据库的链接。PHP需要安装OCI8扩展。

确定PHP可以链接ORACLE数据库之后。我们使用composer安装laravel支持oracle链接的插件 yajra/laravel-oci8

欢迎访问个人博客 guanchao.site

欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”

一:使用composer安装 yajra/laravel-oci8

1 :运行如下命令:

composer require yajra/laravel-oci8

2 :安装过程中可能会报错,不要纠结那些报错,最简单的解决办法:

试试

php artisan cache:clear

如果这不起作用,请删除你的vendor目录和composer.lock文件并重新运行composer install

二:配置laravel使用oracle数据库

首先说明一下:我这里主要使用的是mysql数据库,oracle数据库只作为偶尔取数据使用。

1 修改在 config 文件夹下的 database.php\

如果你想默认使用oracle数据库,则需要修改:’default’ => env(‘DB_CONNECTION’, ‘oracle’),

但是我这里就不需要了。
增加如下:

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

记得将数据改成你自己的。

具体链接数组信息请参照github

github.com/yajra/larav…

2 修改 ConnectionFactory.php 中的 createConnector 函数和 createConnection 函数

(1):文件在vendor/laravel/framework/src/illuminate/Database/Connectors/ConnectionFactory.php

(2):添加如下的命名空间引用:

use YajraOci8ConnectorsOracleConnector;
use YajraOci8Oci8Connection;

(3):createConnector函数:

添加如下代码:

case 'oracle':
                return new OracleConnector;

如下图所示:

222.png

(4):createConnector函数:

添加如下代码:

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

如下图所示:

333.png

3 修改 config/app.php\

在providers里面增加

YajraOci8Oci8ServiceProvider::class,

4 修改 processInsertGetId 函数\

(在vendor/yajra/laravel-oci8/src/Oci8/Query/processors/OracleProcessor.php)

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

至此已完成了laravel链接oracle的所有配置支持

三:测试

$openList = DB::connection('oracle')->select("SELECT * FROM xxxxxx");
Var_dump($openList);

有结果,不报错,即成功。

有好的建议,,请在下方输入你的评论。

欢迎访问个人博客 guanchao.site

欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”