我正在创建Laravel 6.6项目, 我的查询是如何在laravel中创建新的多个数据库,然后如何处理它,
如果我从最近创建的新数据库中获取数据,那么如何动态地在 .env 文件中注册新数据库?
答案 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