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',