一、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
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的支持配置
四、测试