7

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

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

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

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

4

2 回答 2

11

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

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

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

{
    "require": {
        "yajra/laravel-oci8": "*"
    }
}

然后运行:

composer update

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

yajra\Oci8\Oci8ServiceProvider

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

'connection-name' => array(
    'host' => 'something',
    'port' => 'something',
    'username' => 'something',
    'password' => 'something',
    'charset' => 'something',
    'prefix' => 'something', )

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

于 2013-12-12T12:56:19.687 回答
3

我不确定这会解决所有问题,但是这个 packagegist 库应该让 Oracle 与 Laravel 一起工作。

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

于 2013-09-18T20:14:35.983 回答