您的位置:首页 > 数据库 > Oracle

Laravel框架连接Oracle数据库

2017-11-06 16:06 204 查看
一、PHP开启oci8

1.到官网下载oci8扩展(http://pecl.php.net/package/oci8

php_oci8.dll

php_oci8_11g.dll

php_oci8_12c.dll

三个拓展文件分别对应Oracle10g、11g、12g

将拓展文件复制到php文件夹里面的ext文件夹里面

2.配置php.ini

oci8.privileged_connect = On

extension=php_oci8_11g.dll

extension=php_pdo_oci.dll

去掉分号,然后重启服务(Apache or IIS)

3.查看是否开启

phpinfo();



至此可以用oci_connect连接Oracle数据库,如下:

$conn = oci_connect('tjris', 'tjris', 'ORCL');
if (!$conn) {
$e = oci_error();
print htmlentities($e['message']);
exit;
}else {
echo "连接oracle成功!";
}


二、composer 添加第三方的组件 yajra/laravel-oci8

1.安装 composer (https://getcomposer.org/Composer-Setup.exe

注意:composer命令需要到Laravel项目根目录运行

2.换源

composer config -g repo.packagist composer https://packagist.phpcomposer.com[/code] 
3.查看Laravel安装

composer install


4.修改根目录的composer.json

“require-dev”: { …… “yajra/laravel-oci8”:”5.3.1”}

然后:composer?update

假如:”yajra/laravel-oci8”:”5.3.*”(不注明版本)

则运行:composer require yajra/laravel-oci8:”5.3.*”

三、使用第三方组件

1.修改在config文件夹下的database.php

修改:’default’ => env(‘DB_CONNECTION’, ‘oracle’),

增加如下:

'oracle' => [
'driver'        => 'oracle',
'tns'           => env('DB_TNS', ''),
'host'          => env('DB_HOST', ''),
'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_PREFIX', ''),
'prefix_schema' => env('DB_SCHEMA_PREFIX', ''),
],


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

(文件在vendor/laravel/framework/src/illuminate/Database/Connectors/ConnectionFactory.php)

2.0 ConnectionFactory类引用以下声明

use Yajra\Oci8\Connectors\OracleConnector;

use Yajra\Oci8\Oci8Connection;

2.1createConnector函数:

case 'sqlsrv':
return new SqlServerConnector;
case 'oracle':
return new OracleConnector;


2.2createConnection函数:

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


2.3 修改config/app.php

在providers里面增加

Yajra\Oci8\Oci8ServiceProvider::class,

2.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的支持配置

四、测试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  框架 php laravel