Php 是否可以在没有默认数据库的情况下使用Laravel 4

Php 是否可以在没有默认数据库的情况下使用Laravel 4,php,database,laravel,laravel-4,Php,Database,Laravel,Laravel 4,我正在创建一个应用程序,它从许多不同的数据库读取信息,但实际上没有自己的数据库,因为任何地方都没有写入信息 基本上,用户选择一条记录和一种类型,应用程序将根据他们的选择生成一个.pdf文件。我在app/config/database.php中定义了多个连接,但默认情况下我不想连接其中任何一个。有没有办法告诉Laravel不要连接到数据库?我尝试了一些东西(都在app/config/database.php),首先是: 'default' => NULL, // and //'defaul

我正在创建一个应用程序,它从许多不同的数据库读取信息,但实际上没有自己的数据库,因为任何地方都没有写入信息

基本上,用户选择一条记录和一种类型,应用程序将根据他们的选择生成一个
.pdf
文件。我在
app/config/database.php
中定义了多个连接,但默认情况下我不想连接其中任何一个。有没有办法告诉Laravel不要连接到数据库?我尝试了一些东西(都在
app/config/database.php
),首先是:

'default' => NULL,
// and 
//'default' => '',
两者都返回:

未定义索引:驱动程序

我也试过:

'default' => 'none',

'connections' => array(
    'none' => array(
        'driver' => '',
        'host' => '',
        ...
     ),
 ),
这反过来又返回:

不支持的驱动程序[]

不支持的主机[]

最后设置
'default'=>''
,返回:

数据库[]未配置

我已经找到了在没有数据库连接的情况下使用Laravel模型的方法,但实际上并不是Laravel本身

编辑

将连接设置为现有mysql连接而不选择数据库“工作”:


但我不确定这样做是否正确。这感觉像是一种解决方法,而不是实际的解决方案。

在app/config/database.php文件中定义连接,并在使用laravel的DB::connection(“连接名称”)运行查询时指定连接。
这里的更多信息-->

只需在数据库配置中将db驱动程序定义为“sqlite”

'default' => 'sqlite',
只要您没有更改默认sqlite配置部分中的任何内容,所有内容都应该可以工作。您不必使用数据库,但它会减轻您收到的错误

如果出于任何原因更改了默认的sqlite配置,可以按照以下步骤配置sqlite db

'sqlite' => array(
    'driver'   => 'sqlite',
    'database' => __DIR__.'/../database/production.sqlite',
    'prefix'   => '',
),
此外,如果此“production.sqlite”文件不存在,请确保它存在。您可以通过命令行轻松执行此操作:

touch app/database/production.sqlite

我会这样做:

'driver' => 'sqlite',
对于
sqlite
连接设置

'sqlite' => [
    'driver' => 'sqlite',
    'database' => ':memory:',
    'prefix' => '',
]
这样,它将使用,并且当数据库连接关闭时,数据库将不再存在,并且由于您不会打开连接,因此您将永远不会打开本地数据库

您还可以从
app.php
config文件中删除数据库服务提供程序:

    'Illuminate\Cookie\CookieServiceProvider',
    //'Illuminate\Database\DatabaseServiceProvider',
    'Illuminate\Encryption\EncryptionServiceProvider',
在同一文件中,流畅和雄辩的正面:

    'Crypt'     => 'Illuminate\Support\Facades\Crypt',
    //'DB'        => 'Illuminate\Support\Facades\DB',
    //'Eloquent'  => 'Illuminate\Database\Eloquent\Model',
    'Event'     => 'Illuminate\Support\Facades\Event',

这将阻止您连接到本地数据库,甚至无法启动刚刚设置的
sqlite
数据库连接

创建你自己的驱动程序,它什么都不做?只要你不使用它,它就什么都不会做,所以别管它。我已经用上面所有的方法做到了。它唯一起作用的是最后一个无数据库示例。其他三个仍然导致相同的错误。访问我的
Route::get(“/”
调用了
DB::connection(“示例”)…
(这不是默认数据库)但仍然失败。返回一个错误,就像我在上一个问题中所说的,建议将
sqlite
作为我的驱动程序:
PDOException:找不到驱动程序“
(答案已被海报删除,但基本上与您的答案相同)。此外,我仍然在使用
DB
雄辩的
外观,就像我仍然在从数据库中提取信息一样,所以你问题的后半部分似乎是个坏主意。是的,第二部分更适合于人们重新访问问题,想要一个没有数据库的应用程序。只是出于兴趣,你在使用什么环境运行你的代码?我一直使用sqlite内存数据库进行测试,从来没有遇到过找不到驱动程序的问题。是的,这是有道理的,但它不适用于我正在尝试做的事情:P同样,在Linux Ubuntu 14.04上使用Apache/MySql/PHP5.4(我想)我刚刚尝试过这个解决方案,但发现您只需在数据库配置中设置**'default'=>false**,然后注释掉您提到的行(服务提供商和facades),就可以了。返回:
“PDOException:找不到驱动程序”
。请参阅Andrew Willis的回答。
    'Crypt'     => 'Illuminate\Support\Facades\Crypt',
    //'DB'        => 'Illuminate\Support\Facades\DB',
    //'Eloquent'  => 'Illuminate\Database\Eloquent\Model',
    'Event'     => 'Illuminate\Support\Facades\Event',