我正在创建Laravel 6.6项目,我的问题是如何在Laravel中创建新的多个数据库,然后如何处理它,如果我从最近创建的新数据库中获取数据,那么如何在**.env**文件中动态注册新数据库?
kdfy810k1#
我是这样做的。我在config/database.php中有一个虚拟的客户端连接条目,如下所示:
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';,其他模型使用默认连接。当更改客户端时(因此我需要切换连接),我只需通过调用以下命令设置新连接:
$connection = 'clientDb';
Config::set('database.connections.clientDb', [ 'database' => NEW_DATABASE_NAME, // all the other params from config ]);
在那之后,我想到了调用DB::reconnect('clientDb');来让连接 * 真正 * 运行。我希望,这会把你引向正确的方向😉
DB::reconnect('clientDb');
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, ],
inkz8wg93#
您可以使用它:
$names=['name1','name2']; Schema::create('t1', function($table) { $table->increments('id'); });
要设置env,请查看:环境
3条答案
按热度按时间kdfy810k1#
我是这样做的。
我在
config/database.php
中有一个虚拟的客户端连接条目,如下所示:因此,我的所有客户端相关模型都使用
$connection = 'clientDb';
,其他模型使用默认连接。当更改客户端时(因此我需要切换连接),我只需通过调用以下命令设置新连接:
在那之后,我想到了调用
DB::reconnect('clientDb');
来让连接 * 真正 * 运行。我希望,这会把你引向正确的方向😉
ev7lccsx2#
你应该从config目录中的database.php使用。例如,我有另一个mysql数据库,它不同于主数据库:因此我将以下代码添加到database.php和连接部分:
inkz8wg93#
您可以使用它:
要设置env,请查看:环境