连接到Oracle:CodeIgniter与Laravel

Fix*_*ker 7 php oracle codeigniter laravel

我一直在为我正在进行的项目寻找一个PHP框架.其中一个主要要求是与数据库交互的简便方法.最初这必须是Oracle,但将来有可能切换到不同的数据库后端.因此,我希望能够编写尽可能与数据库无关的代码.

我最初倾向于CodeIgniter,主要是因为它支持Oracle(它包括为了利用Oracle自己的OCI8驱动程序而编写的驱动程序).

Laravel是我考虑过的另一种选择.它似乎是一个流行的选项,即使有一些以前的CodeIgniter用户(例如,请参阅此答案).但是,它的Oracle支持似乎非常有限; 据我所知,Laravel广泛使用PDO,但PDO for Oracle是实验性的,不推荐使用.

有一种简单的方法可以使用Laravel以数据库无关的方式连接到Oracle吗?

Fix*_*ker 11

在研究了fideloper提供的链接之后,看起来一些有用的编码器继续为Oracle开发一个利用本机OCI8 PHP驱动程序功能的PDO用户空间驱动程序.

根据这个网站,这可以通过使用composer安装在Laravel中:

添加yajra/laravel-oci8为要求composer.json:

{
    "require": {
        "yajra/laravel-oci8": "*"
    }
}
Run Code Online (Sandbox Code Playgroud)

然后运行:

composer update
Run Code Online (Sandbox Code Playgroud)

Composer安装或更新您的软件包后,您需要注册服务提供商.打开app/config/app.php并找到提供者密钥并添加:

yajra\Oci8\Oci8ServiceProvider
Run Code Online (Sandbox Code Playgroud)

最后,您需要使用驱动程序"pdo-via-oci8"设置有效的数据库配置.像往常一样配置连接:

'connection-name' => array(
    'host' => 'something',
    'port' => 'something',
    'username' => 'something',
    'password' => 'something',
    'charset' => 'something',
    'prefix' => 'something', )
Run Code Online (Sandbox Code Playgroud)

然后Laravel可以使用Eloquent等以数据库无关的方式访问Oracle.我已经给出了一些基本的测试,它似乎运行良好.


fid*_*per 3

我不确定这能解决所有问题,但这个 packagist 库应该能让 Oracle 与 Laravel 一起使用。

请注意,OCI8 可能仍然存在问题,但是:/