Laravel-OCI8 是 Laravel 的 Oracle 資料庫驅動程式套件。 Laravel-OCI8 是 Illuminate/Database 的擴展,它使用 OCI8 擴展與 Oracle 進行通訊。感謝@taylorotwell。
您可以在這裡找到用戶友好且更新的文件:Laravel-OCI8 Docs
關於 oracle 和 php 的一切: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 artisan 供應商:發布 --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', ''),'用戶名' => 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','使用者名稱'=>'hr','密碼'=>'hr','字元集'=>'','前綴'=>'', ]
在某些情況下,您可能希望在應用程式中動態設定連線參數。 例如,您可能會存取多個資料庫,或者您的使用者可能已經在 Oracle 資料庫上擁有自己的帳戶:
'oracle' => ['driver' => 'oracle','host' => 'oracle.host','port' => '1521','service_name' => 'sid_alias','prefix' => ' schemaowner','dynamic' => [AppModelsOracleConfig::class, 'dynamicConfig'], ]
應用程式中的回呼函數必須是靜態的,並接受對$config[]
數組的引用(該數組已填入設定檔中設定的值):
命名空間 AppModelsOracle;class Config {public static functiondynamicConfig(&$config) {if (IlluminateSupportFacadesAuth::check()) {$config['username'] = AppOracleConfig::getOraUser();$config['password);$config[' ::getOraPass(); } } }
然後運行你的 laravel 安裝...
預設情況下,資料庫物件名稱限制為 30 個字元。若要增加限制,您可以在.env
檔案中設定ORA_MAX_NAME_LEN=128
。
注意:此配置需要Oracle 12c02 或更高版本。
在使用oracle時,我們可能會遇到身份驗證問題,因為oracle查詢預設區分大小寫。透過使用這個 oracle 用戶提供程序,我們現在將能夠避免登入時出現用戶問題以及由於區分大小寫的搜尋而導致忘記密碼失敗。
要使用,只需更新auth.php
配置並將驅動程式設定為oracle
'providers' => ['users' => ['driver' => 'oracle','model' => AppUser::class, ], ]
阿傑·安吉利斯
吉米·費爾德
所有貢獻者
麻省理工學院許可證 (MIT)。請參閱許可證文件以獲取更多資訊。