Ber*_*los 7 php sqlite postgresql laravel lumen
在Lumen项目中,我需要在运行时创建数据库连接,但每次尝试使用最近创建的连接时,我都会收到"Database [...] not configured"错误.
这是我在routes.php上的测试代码:
<?php
$app->get('/', function () use ($app) {
$config = $app->make('config');
$config->set('database.connections.retail_db', [
'driver' => 'pgsql',
'host' => env('RETAIL_DB_HOST', 'localhost'),
'port' => env('RETAIL_DB_PORT', 5432),
'database' => env('RETAIL_DB_DATABASE', 'forge'),
'username' => env('RETAIL_DB_USERNAME', 'forge'),
'password' => env('RETAIL_DB_PASSWORD', ''),
'charset' => env('RETAIL_DB_CHARSET', 'utf8'),
'prefix' => env('RETAIL_DB_PREFIX', ''),
'schema' => env('RETAIL_DB_SCHEMA', 'public'),
]);
return app('db')->connection('retail_db')->select("SELECT * FROM users");
});
Run Code Online (Sandbox Code Playgroud)
这段代码应该适用于Laravel,但我找不到任何有关Lumen的信息.
我正在使用最新的流明版本.
cod*_*dge 15
您要使用的方法存在一个主要问题:
您没有初始化任何配置对象.默认情况下,流明没有传统的配置对象集,直到您config在根文件夹中创建目录.
正如Lumen配置文档中所写:
Lumen框架的所有配置选项都存储在.env文件中.
您要采用的方法需要Laravel中使用的传统配置对象.
要使该对象和新retail_db数据库连接正常工作:
config在项目根目录中创建一个文件夹vendor/laravel/lumen-framework/config/database.php到此配置文件夹bootstrap/app.phpwith中初始化数据库配置对象$app->configure('database');(将其放在第28行)您的文件夹结构现在看起来像这样:
??? app
??? bootstrap
??? config
??? database.php
??? database
??? public
??? resources
??? storage
??? tests
??? vendor
Run Code Online (Sandbox Code Playgroud)
当然,您可以app/config/database.php通过注释或完全删除连接数组来删除不需要的连接.
应用程序/配置/ database.php中
'connections' => [
/*'testing' => [
'driver' => 'sqlite',
'database' => ':memory:',
],*/
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', base_path('database/database.sqlite')),
'prefix' => env('DB_PREFIX', ''),
],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', 3306),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => env('DB_CHARSET', 'utf8'),
'collation' => env('DB_COLLATION', 'utf8_unicode_ci'),
'prefix' => env('DB_PREFIX', ''),
'timezone' => env('DB_TIMEZONE', '+00:00'),
'strict' => env('DB_STRICT_MODE', false),
],
]
Run Code Online (Sandbox Code Playgroud)
您的bootstrap/app.php包含更改:
/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| Here we will load the environment and create the application instance
| that serves as the central piece of this framework. We'll use this
| application as an "IoC" container and router for this framework.
|
*/
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
//$app->withFacades();
// $app->withEloquent();
$app->configure('database');
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用已有的代码routes.php.
要删除您的retail_db连接,只需将其设置为null:
$config->set('database.connections.retail_db', null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9992 次 |
| 最近记录: |