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

pftdvrlh  于 2022-12-05  发布在  其他
关注(0)|答案(3)|浏览(118)

我正在创建Laravel 6.6项目,我的问题是如何在Laravel中创建新的多个数据库,然后如何处理它,
如果我从最近创建的新数据库中获取数据,那么如何在**.env**文件中动态注册新数据库?

kdfy810k

kdfy810k1#

我是这样做的。
我在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');来让连接 * 真正 * 运行。
我希望,这会把你引向正确的方向😉

ev7lccsx

ev7lccsx2#

你应该从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,
        ],
inkz8wg9

inkz8wg93#

您可以使用它:

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

要设置env,请查看:环境

相关问题