1. 程式人生 > 實用技巧 >laravel5.8(十四)連線oracle資料庫

laravel5.8(十四)連線oracle資料庫

首先確定你的PHP已經支援oracle資料庫的連結。PHP需要安裝OCI8擴充套件。

確定PHP可以連結ORACLE資料庫之後。我們使用composer安裝laravel支援oracle連結的外掛 yajra/laravel-oci8

一:使用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

https://github.com/yajra/laravel-oci8

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

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

(2):新增如下的名稱空間引用:

use Yajra\Oci8\Connectors\OracleConnector;
use Yajra\Oci8\Oci8Connection;

(3):createConnector函式:

新增如下程式碼:

case 'oracle':
                return new OracleConnector;

如下圖所示:

(4):createConnector函式:

新增如下程式碼:

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

如下圖所示:

3:修改config/app.php

在providers裡面增加

Yajra\Oci8\Oci8ServiceProvider::class,

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的所有配置支援

三:測試

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

有結果,不報錯,即成功。

原文連結:https://guanchao.site/index/article/articledetail.html?artid=qoFhpAs1J

有好的建議,,請在下方輸入你的評論。

歡迎訪問個人部落格
https://guanchao.site

歡迎訪問小程式: