【发布时间】:2020-04-29 08:38:56
【问题描述】:
Laravel 5.8。我正在尝试保存 Eloquent 模型,在运行时选择数据库连接:
$catModel = new Cat;
if (env('USE_STAGING')) {
$catModel->setConnection('staging');
}
$cat = $catModel::create(['name' => $request->name]);
我的config/database.php 文件:
'default' => env('DB_CONNECTION', 'mysql'),
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'staging' => [
'driver' => 'mysql',
'host' => env('STAGING_DB_HOST', '127.0.0.1'),
'port' => env('STAGING_DB_PORT', '3306'),
'database' => env('STAGING_DB_DATABASE', 'forge'),
'username' => env('STAGING_DB_USERNAME', 'forge'),
'password' => env('STAGING_DB_PASSWORD', ''),
'unix_socket' => env('STAGING_DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
],
我的问题是,每次我运行这段代码时,cat 都会在mysql(默认)数据库中创建,而不是staging 数据库,即使USE_STAGING 是true。
【问题讨论】:
-
你不应该在配置文件之外调用
env(),如果你缓存你的配置,它会返回null,你确定你真的输入了if语句吗? -
@Remul 很高兴知道。但是是的,在这种情况下,我输入了
if语句。
标签: php mysql database laravel eloquent