Laravel5 + PHP7でOracleに接続する

PHP7でOracleに接続するでPHP7からの接続はできるようになりました。
LaravelでOracleを使うときの具体的な手順を解説します。

パッケージのインストール

必要なパッケージはこれ。
Packagist: yajra/laravel-oci8
Github: yajra/laravel-oci8

$ php composer.phar require yajra/laravel-oci8:v5.7.2

どうやらこれだけで動くっぽいです。

Databese接続パラメータの設定

例によってconfig/database.phpに設定します。Oracleはデフォルトで設定項目がない(配列に入っていない)ので自分で追加してあげる必要があります。

'connections' => [
...
    'oracle' => [
        'driver' => 'oracle',
        'host' => 'localhost',
        'port' => '1521',
        'database' => 'dbname',
        'username' => 'user',
        'password' => 'password',
        'charset' => 'AL32UTF8',
        'prefix' => '',
    ],
...
],

ここの設定はもちろん例の.envの設定にしてもOKです。

    'oracle' => [
        'driver' => env('DB_CONNECTION', 'oracle'),
        'host' => env('DB_HOST', 'localhost'),
        '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_CONNECTION=oracle
DB_HOST=localhost
DB_PORT=1521
DB_DATABASE=orcl
DB_USERNAME=user
DB_PASSWORD=password
DB_CHARSET=AL32UTF8

ここまでで準備はOK

データベース接続

Laravelの得意とするマイグレーションとモデルという部分は今回は端折ります。今回オラクルの既存のDBにアクセスするという要件だったので新規作成のときにマイグレーションとかは今度やってみます。
ですので、今回はモデルファイルなしです。

Laravel 5.6 データベース:利用開始

適当なコントローラとツーティングをしておきましょう。そこからのコードになります。driver名を設定してデータベース接続します。

$pdo = DB::connection('oracle')->getPdo();
var_dump($pdo);

$pdoでオブジェクトが取得できればOKです。
簡単なSQL文を発行してみます。

$pdo = DB::connection('oracle')->select("select * from sample_table");
var_dump($oem);

これで値を取得できればOKです。

Last update: 2018.10.25 (木)