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

时间:2015-04-23 15:48:33

标签: php database laravel laravel-4

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

基本上,用户选择记录和类型,应用程序将根据他们的选择生成.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'    => '',
),

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

3 个答案:

答案 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