Laravel-OCI8 は、Laravel 用の Oracle データベース ドライバー パッケージです。 Laravel-OCI8 は、OCI8 拡張機能を使用して Oracle と通信する Illuminate/Database の拡張機能です。 @taylorotwell に感謝します。
ユーザーフレンドリーで更新されたドキュメントはここにあります: Laravel-OCI8 Docs
oracle と php のすべて:The Underground PHP および Oracle マニュアル
ララベル | パッケージ |
---|---|
5.1.x | 5.1.x |
5.2.x | 5.2.x |
5.3.x | 5.3.x |
5.4.x | 5.4.x |
5.5.x | 5.5.x |
5.6.x | 5.6.x |
5.7.x | 5.7.x |
5.8.x | 5.8.x |
6.x | 6.x |
7.x | 7.x |
8.x | 8.x |
9.x | 9.x |
10.x | 10.x |
11.x | 11.x |
作曲家には yajra/laravel-oci8:^11 が必要です
Composer がパッケージをインストールまたは更新したら、Laravel-OCI8 を登録する必要があります。 config/app.php
を開き、プロバイダー キーを見つけて次を追加します。
YajraOci8Oci8ServiceProvider::クラス、
最後に、必要に応じて、次の Artisan コマンドを実行して構成ファイルを公開できます。構成ファイルが公開されていない場合、パッケージは.env
ファイル データベース構成で宣言されている内容を自動的に使用します。
php 職人ベンダー:publish --tag=oracle
これにより、構成ファイルがconfig/oracle.php
にコピーされます。
注: Laravel Lumen 設定の場合は、プロジェクトに
config/database.php
ファイルがあることを確認し、以下の設定を追加してください。
'oracle' => ['driver' => 'oracle','tns' => env('DB_TNS', ''),'host' => env('DB_HOST', ''),'port' => env('DB_PORT', '1521'),'database' => env('DB_DATABASE', ''),'service_name' => env('DB_SERVICE_NAME', ''),'username' => env('DB_USERNAME', ''),'password' => env('DB_PASSWORD', ''),'charset' => env('DB_CHARSET' , 'AL32UTF8'),'prefix' => env('DB_PREFIX', ''),'prefix_schema' => env('DB_SCHEMA_PREFIX', ''),'edition' => env('DB_EDITION', 'ora$base'),'server_version' => env('DB_SERVER_VERSION', '11g'),'load_balance' = > env('DB_LOAD_BALANCE', 'yes'),'dynamic' => [],'max_name_len' => env('ORA_MAX_NAME_LEN', 30), ]、
次に、
.env
ファイルに接続データを設定できます。
DB_CONNECTION=oracleDB_HOST=oracle.hostDB_PORT=1521DB_SERVICE_NAME=orclDB_DATABASE=xeDB_USERNAME=hrDB_PASSWORD=hr
複数のホストを含むクラスターに接続する場合は、
tns
手動で設定するか、ホストをカンマ区切りの配列として設定し、必要に応じて他のフィールドを構成できます。
DB_CONNECTION=oracleDB_HOST=oracle1.host、oracle2.hostDB_PORT=1521DB_SERVICE_NAME=orclDB_LOAD_BALANCE=noDB_DATABASE=xeDB_USERNAME=hrDB_PASSWORD=hr
tns の代わりにサービス名を使用して接続する必要がある場合は、以下の構成を使用できます。
'oracle' => ['driver' => 'oracle','host' => 'oracle.host','port' => '1521','database' => 'xe','service_name' => ' sid_alias','username' => 'hr','password' => 'hr','charset' => '','prefix' => '', 】
場合によっては、アプリ内で接続パラメーターを動的に設定したい場合があります。 たとえば、複数のデータベースにアクセスしたり、ユーザーがすでに Oracle データベースに独自のアカウントを持っている場合があります。
'oracle' => ['driver' => 'oracle','host' => 'oracle.host','port' => '1521','service_name' => 'sid_alias','prefix' => ' schemaowner','dynamic' => [AppModelsOracleConfig::class, 'dynamicConfig'], 】
アプリのコールバック関数は静的であり、 $config[]
配列への参照を受け入れる必要があります (この配列には、構成ファイルに設定された値がすでに入力されています)。
名前空間 AppModelsOracle;クラス Config {パブリック静的関数 DynamicConfig(&$config) {if (IlluminateSupportFacadesAuth::check()) {$config['ユーザー名'] = AppOracleConfig::getOraUser();$config['パスワード'] = AppOracleConfig ::getOraPass(); } } }
次に、laravel インストールを実行します...
デフォルトでは、DB オブジェクト名は 30 文字に制限されています。制限を増やすには、 .env
ファイルでORA_MAX_NAME_LEN=128
を設定します。
注: この構成にはOracle 12c02 以降が必要です。
oracle を使用する場合、oracle クエリはデフォルトで大文字と小文字が区別されるため、認証時に問題が発生する可能性があります。この Oracle ユーザー プロバイダーを使用することで、大文字と小文字を区別した検索によるログイン時やパスワードを忘れた場合のユーザーの問題を回避できるようになります。
使用するには、 auth.php
構成を更新し、ドライバーをoracle
に設定するだけです
'providers' => ['users' => ['driver' => 'oracle','model' => AppUser::class, ]、 】
アージェイ・エンジェルス
ジミー・フェルダー
すべての貢献者
MIT ライセンス (MIT)。詳細については、ライセンス ファイルを参照してください。