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

时间:2019-12-03 10:01:18

标签: php mysql laravel eloquent laravel-6

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

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

3 个答案:

答案 0 :(得分:0)

我正在按照以下方式进行操作。

我在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');来使连接确实运行的方式。

我希望这会引导您朝正确的方向前进

答案 1 :(得分:0)

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

 '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,
        ],

答案 2 :(得分:0)

您可以使用它:

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

要设置环境,请查看以下内容:ENV