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'),'数据库' => env('DB_DATABASE', ''),'service_name' => env('DB_SERVICE_NAME', ''),'用户名' => env('DB_USERNAME', ''),'密码' => env('DB_PASSWORD', ''),'charset' => env('DB_CHARSET' , 'AL32UTF8'),'前缀' => 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', '是'),'动态' => [],'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'] = AppOracleConfig ::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)。请参阅许可证文件以获取更多信息。