laravel5.6在运行时永久更改数据库连接

vpfxa7rd  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(311)

我有两个数据库。第二个数据库是动态变化的,即每个客户机都有自己的数据库,因此数据库名称和密码不同,但所有客户机的体系结构都是相同的。所以我有两个模型组,第一个用于第一个数据库,第二个用于第二个数据库。实际上,第二个模型组必须能够对客户机数据库而不是默认数据库进行查询
所以我想动态设置默认的数据库连接。 Config::Set() 只为一个请求。我以后的每一个请求都要它。
我使用laravel框架,你知道一个干净的解决方案,可能会解决我的问题,并帮助其他感兴趣的人
谢谢大家的帮助

4dc9hkyq

4dc9hkyq1#

在中创建两个条目 config/database.php :

'connections' => array(

    # Connection one
    'mysql_1' => array(
        'driver'    => 'mysql_1',
        'host'      => 'host_1',
        'database'  => 'db_1',
        'username'  => 'username_1',
        'password'  => 'password_1'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

    # Connection two
    'mysql_2' => array(
        'driver'    => 'mysql_2',
        'host'      => 'host_2',
        'database'  => 'db_2',
        'username'  => 'username_2',
        'password'  => 'password_2'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),
),

为每组模型创建一个基本模型或特征,在模型级别设置连接。将所有模型更改为从各自的基础模型扩展而来。
基本模型

class BaseGroupOneModel extends Model
{
    protected $connection = 'mysql_1';
}

class BaseGroupTwoModel extends Model
{
    protected $connection = 'mysql_2';
}

特点

trait GroupOneTrait
{
    protected $connection = 'mysql_1';
}

trait GroupTwoTrait
{
    protected $connection = 'mysql_2';
}

class GroupOneModel extends Model
{
    use app/Models/Traits/GroupOneTrait;
}

class GroupTwoModel extends Model
{
    use app/Models/Traits/GroupTwoTrait;
}

相关问题