
[英]In laravel how to create multiple database with table for multiple client?
[英]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.