我正在创建一个从许多不同数据库中读取信息的应用程序,但实际上并没有自己的数据库,因为没有任何信息可以在任何地方写入。
基本上,用户选择记录和类型,应用程序将根据他们的选择生成.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连接的连接而不是选择数据库“工作”:
'default' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => '',
'username' => '****',
'password' => '****',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
但我不确定这是否是正确的方法。感觉就像是一种解决方法,而不是一种实际的解决方案。
答案 0 :(得分:4)
我会做以下事情:
'driver' => 'sqlite',
和sqlite
连接设置
'sqlite' => [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
]
这样,它将使用in-memory database并且数据库连接关闭时数据库将不再存在,并且由于您不打开连接,因此您将永远不会打开本地数据库
您还可以从app.php
配置文件中删除数据库服务提供商:
'Illuminate\Cookie\CookieServiceProvider',
//'Illuminate\Database\DatabaseServiceProvider',
'Illuminate\Encryption\EncryptionServiceProvider',
和同一档案中的Fluent和Eloquent外观:
'Crypt' => 'Illuminate\Support\Facades\Crypt',
//'DB' => 'Illuminate\Support\Facades\DB',
//'Eloquent' => 'Illuminate\Database\Eloquent\Model',
'Event' => 'Illuminate\Support\Facades\Event',
这将阻止您连接到本地数据库,甚至无法启动您刚刚设置的sqlite
数据库连接。
答案 1 :(得分:0)
您需要做什么来定义app / config / database.php文件中的连接,并在使用laravel的DB :: connection(' connection_name')运行查询时指定连接。 更多信息 - > http://laravel.com/docs/4.2/database#accessing-connections
答案 2 :(得分:0)
只需在数据库配置中将数据库驱动程序定义为“sqlite”即可。
'default' => 'sqlite',
只要您没有更改默认的sqlite配置部分中的任何内容,所有内容都应该有效。您不一定要使用数据库,但它会减轻您收到的错误。
如果您因任何原因更改了默认的sqlite配置,您可以按照以下步骤配置sqlite数据库。
'sqlite' => array(
'driver' => 'sqlite',
'database' => __DIR__.'/../database/production.sqlite',
'prefix' => '',
),
另外,请确保此'production.sqlite'文件存在(如果尚未存在)。您可以从命令行轻松完成此操作:
touch app/database/production.sqlite