Laravel - 获取当前的 .env() 值

Laravel - Get current .env() Value

我正在做一个 Laravel 项目。我经常在开发过程中更改 Mysql 和 Sqlite 之间的数据库连接。在 php artisan Laravel 命令中,我有一个导入例程。因为不想把数据写错数据库,想在导入前设置一个if条件。但不幸的是它并没有像我想象的那样工作。

if ( env('DB_CONNECTION', null ) === 'sqlite') {
   // Import to sqlite
} else if (env('DB_CONNECTION') === 'mysql') {
  // Import to mysql
} else {
  // no database in env DB_CONNECTION
}

在我的 .env 文件中,当前 DB_CONNECTION 设置为 sqlite。但是 env('DB_CONNECTION', null) returns null.

我需要做什么才能找到当前连接?也许此时使用 env() 不是正确的选择?

对于所有将来遇到同样问题的人。 总是!但是真的总是,在你修改了.env变量之后,你应该执行下面的“清理”命令:

php artisan config:cache
php artisan config:clear

如果仍然没有得到值,请询问。

  1. 除配置文件外,您不应在任何地方使用 env() 函数。相反,使用 config('database.default'),因为缓存配置时,出于安全原因,env 为空。
  2. 您可以在 config/database.php 中创建多个数据库连接并使用 facade 在它们之间手动切换:DB::connection('sqlite')DB::connection('mysql') 并避免这种丑陋的 if - else if 树。