Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 拉威尔负荷数据库_Database_Laravel_Dynamic - Fatal编程技术网

Database 拉威尔负荷数据库

Database 拉威尔负荷数据库,database,laravel,dynamic,Database,Laravel,Dynamic,我在一个Laravel应用程序中工作,其中有一个随时间变化的数据库 它可能被称为 20042018 今天和 21042018 明天 我知道如何计算它的名称,只是不知道在哪里添加脚本来查找数据库名称 我必须以模态的方式做这件事吗?或者我应该在某个地方设置一个动态DB的构造函数 在我的database.php文件中,我想包含此数据库,但如何将此数据库动态添加到database.php中的驱动程序中?可以在您的AppServiceProvider.php注册函数中设置: public f

我在一个Laravel应用程序中工作,其中有一个随时间变化的数据库

它可能被称为

 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
文件中复制粘贴了这篇文章,没有考虑它,我会相应地更新答案。谢谢你指出这一点。