Laravel 使用 Oracle 数据库

    由于 Laravel 原生不支持 Oracle,项目又需要使用 Oracle,所以需要使用组件来满足。laravel-oci8 是一款专为 Laravel 开发的支持 Oracle 数据库的组件,安装这个组件需要依赖 php-oci8 扩展,这里记录一下安装和配置的过程。我使用的 Mac,下面基于 MacOS 来安装,PHP 版本是7.2。

安装 oci8 扩展

1、先安装 Oracle 的客户端 Instantclient,下载地址:传送门
2、选择对应的版本,然后下载以下文件:

instantclient-basic-macos.x64-12.2.0.1.0-2.zip 
instantclient-sqlplus-macos.x64-12.2.0.1.0-2.zip
instantclient-sdk-macos.x64-12.2.0.1.0-2.zip

3、将三个包解压到同一目录下

$ sudo unzip instantclient-basic-macos.x64-12.2.0.1.0-2.zip -d /usr/local/
$ sudo unzip instantclient-sdk-macos.x64-12.2.0.1.0-2.zip -d /usr/local/
$ sudo unzip instantclient-sqlplus-macos.x64-12.2.0.1.0-2.zip -d /usr/local/

上面的命令会解压到/usr/local/instantclient_12_2
4、创建软链接:

$ sudo ln -s /usr/local/instantclient/12.2.0.1.0/sdk/include/*.h /usr/local/include/
$ sudo ln -s /usr/local/instantclient/12.2.0.1.0/sqlplus /usr/local/bin/
$ sudo ln -s /usr/local/instantclient/12.2.0.1.0/*.dylib /usr/local/lib/
$ sudo ln -s /usr/local/instantclient/12.2.0.1.0/*.dylib.12.1 /usr/local/lib/
$ sudo ln -s /usr/local/lib/libclntsh.dylib.12.1 /usr/local/lib/libclntsh.dylib

5、安装扩展
直接使用 pecl 安装即可,Mac 默认没有 pecl,需要自己安装。
php版本 >=8.0

$ pecl install oci8

php版本 >=7.0

$ pecl install oci8-2.2.0

注意了PHP7.0的一定不要使用 oci8-3.0.0

Laravel 使用 Oracle 数据库

我这里提示未找到包,解决方式:可以进入 oci8 的网站 http://pecl.php.net/package/oci8。

Laravel 使用 Oracle 数据库

然后将包的名称替换为复制的链接即可

$ pecl install http://pecl.php.net/get/oci8-2.2.0.tgz

在安装过程中,需要我们输入 oracle home 的位置,直接填写 instantclient,/usr/local/instantclient_12_2 即可,等待完成安装。

Laravel 使用 Oracle 数据库

如果安装没有出现错误就表明安装成功了,重启 php-fpm 使扩展生效。

安装和使用 laravel-oci8

安装

$ composer require yajra/laravel-oci8

然后在config/database.php中添加数据库配置

'connections' => [
    'oracle' => [
        'driver' => 'oracle',
        'host' => '',
        'port' => '1521',
        'database' => '',
        'service_name' => '',
        'username' => '',
        'password' => '',
        'charset' => '',
        'prefix' => '',
    ],
    ...
    ...
]

正确填写完配置就可以使用 oracle 了。

$res = DB::connection('oracle')->table('user')->limit(10)->get();

END!

本作品采用《CC 协议》,转载必须注明作者和本文链接
Hesunfly
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 5

可以使用模型关联吗

2年前 评论
Hesunfly (楼主) 2年前
Zain (作者) 2年前

安装不上oci8 扩展是怎么回事啊?

file

1年前 评论
Hesunfly (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!