如何更改 OctoberCMS 中的数据库连接中间代码 / Laravel

How to change the Database connection mid code in OctoberCMS / Laravel

我正在尝试创建一个适用于多个客户的系统,每个客户都有自己的数据库,但使用相同的在线系统。

总而言之,当用户登录时,我只会select他公司的数据库,并且只会看到他数据库中的数据。

如果不推荐这种方式,请给我反馈。

使用 Config 门面更改连接。您将需要确保使用公共数据库(即用户身份验证)的模型明确设置了它们的数据库连接,以便配置中的动态更改不会影响这些模型。

这是一个如何完成此操作的示例。

在您的自定义插件的 Plugin.php 文件中:

use Config;
use Backend\Models\User;
use System\Classes\PluginBase;

class Plugin extends PluginBase
{
    public function register()
    {
        User::extend(function($model) {
            $model->setConnection('my_default_connection');
        });

        Config::set('database.default', 'this_companies_connection');
    }
}