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
如果仍然没有得到值,请询问。
- 除配置文件外,您不应在任何地方使用
env()
函数。相反,使用 config('database.default')
,因为缓存配置时,出于安全原因,env 为空。
- 您可以在
config/database.php
中创建多个数据库连接并使用 facade 在它们之间手动切换:DB::connection('sqlite')
或 DB::connection('mysql')
并避免这种丑陋的 if - else if
树。
我正在做一个 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
如果仍然没有得到值,请询问。
- 除配置文件外,您不应在任何地方使用
env()
函数。相反,使用config('database.default')
,因为缓存配置时,出于安全原因,env 为空。 - 您可以在
config/database.php
中创建多个数据库连接并使用 facade 在它们之间手动切换:DB::connection('sqlite')
或DB::connection('mysql')
并避免这种丑陋的if - else if
树。