Database 拉威尔负荷数据库
我在一个Laravel应用程序中工作,其中有一个随时间变化的数据库 它可能被称为Database 拉威尔负荷数据库,database,laravel,dynamic,Database,Laravel,Dynamic,我在一个Laravel应用程序中工作,其中有一个随时间变化的数据库 它可能被称为 20042018 今天和 21042018 明天 我知道如何计算它的名称,只是不知道在哪里添加脚本来查找数据库名称 我必须以模态的方式做这件事吗?或者我应该在某个地方设置一个动态DB的构造函数 在我的database.php文件中,我想包含此数据库,但如何将此数据库动态添加到database.php中的驱动程序中?可以在您的AppServiceProvider.php注册函数中设置: public f
20042018
今天和
21042018
明天
我知道如何计算它的名称,只是不知道在哪里添加脚本来查找数据库名称
我必须以模态的方式做这件事吗?或者我应该在某个地方设置一个动态DB的构造函数
在我的database.php文件中,我想包含此数据库,但如何将此数据库动态添加到database.php中的驱动程序中?可以在您的
AppServiceProvider.php
注册函数中设置:
public function register()
{
$db = 2104018; // calculate the name
config(['database.connections.mysql' => [
'driver' => 'mysql',
'host' => config('database.connections.mysql.host'),
'database' => $db,
'username' => config('database.connections.mysql.username'),
'password' => config('database.connections.mysql.password'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
]]);
}
或者另一种方法是在app/helpers.php
中创建一个helper函数,将其添加到“autoload”:{“files”:[“app/helpers.php”]}
下的composer.json
中,并从数据库.php
配置文件调用它:
// app/helpers.php
if (!function_exists('calculate_db_name')) {
function calculate_db_name() {
$db = 12345; // do the thing...
return $db;
}
}
// config/database.php
'mysql' => [
...
'database' => calculate_db_name()
...
]
这是一个漂亮而优雅的解决方案!同意,对于需要根据活动用户id切换数据库连接的多租户应用程序来说,这是一种非常常见的方法,尽管它通常是在中间件中完成的。快速提问,在代码库中使用
env()
而不是通过config()访问会有什么影响
特别是在缓存配置文件以供生产使用时?可能会发生不好的事情。运行php artisan cache:config
后,对配置文件中不包含的env()的调用将返回null。所有配置文件都编译为一个,以便快速加载。完全公开,我从config/database.php
文件中复制粘贴了这篇文章,没有考虑它,我会相应地更新答案。谢谢你指出这一点。