繁体   English   中英

如何在laravel中动态创建多个数据库

[英]How to dynamically create multiple database in laravel

我正在创建 Laravel 6.6 项目,我的查询是如何在 Laravel 中创建新的多个数据库,然后如何处理它,

如果我从最近创建的新数据库中获取数据,那么如何在.env文件中动态注册新数据库?

我正在通过以下方式执行此操作。

我的config/database.php确实有一个用于客户端连接的虚拟条目,如下所示:

        'clientDb' => [
            'driver' => 'mysql',
            'host' => env('DB_CLIENT_HOST', '127.0.0.1'),
            'port' => env('DB_CLIENT_PORT', '3306'),
            'database' => env('DB_CLIENT_DATABASE', 'some_default_client_name'),
            'username' => env('DB_CLIENT_USERNAME', 'root'),
            'password' => env('DB_CLIENT_PASSWORD', ''),
            'unix_socket' => env('DB_CLIENT_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
            'dump' => [],
        ],

因此,我所有与客户端相关的模型都与$connection = 'clientDb'; ,其他使用默认连接。

更改客户端时(因此我需要切换连接),我只需通过调用来设置新连接:

Config::set('database.connections.clientDb', [
   'database' => NEW_DATABASE_NAME,
   // all the other params from config
]);

在那之后,我想通了调用DB::reconnect('clientDb'); 让连接真正运行。

我希望,这会引导你走向正确的方向😉

您应该从 config 目录中的 database.php 使用。 例如,我有另一个与主数据库不同的 mysql 数据库:所以我将此代码添加到 database.php 和连接部分:

 'mysql_second_db' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST_SECOND_DB', '127.0.0.1'),
            'port' => env('DB_PORT_SECOND_DB', '3306'),
            'database' => env('DB_DATABASE_SECOND_DB', 'forge'),
            'username' => env('DB_USERNAME_SECOND_DB', 'forge'),
            'password' => env('DB_PASSWORD_SECOND_DB', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_general_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
        ],

你可以使用它:

 $names=['name1','name2'];
  Schema::create('t1', function($table)
    {
        $table->increments('id');
    });

要设置 env 看: ENV

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM