我想使用多个数据库,我有 1db / user 和1个主数据库,已经在配置文件中设置了主数据库,但是如何管理用户数据库(数据库名称= {user_id} _db )。预先感谢
这是我的配置代码
'main' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
答案 0 :(得分:0)
为每个用户创建数据库是没有用的,即使您出于安全性或其他任何目的这样做也是如此。有用的SO链接MySQL performance: multiple tables vs. index on single table and partitions
您的问题(连接到Laravel中的多个数据库)已在此处得到解答。 How to use multiple database in Laravel
更新
我想,您想即时创建新数据库并连接到它们(不使用.env配置)。尝试连接到新数据库时,创建动态连接而不是指定“ connection-name”。然后,使用Config::set
可以创建新的临时连接,然后将DB::connection
与刚刚创建的临时名称一起使用。阅读更多https://lukevers.com/2015/03/25/on-the-fly-database-connections-with-laravel-5
答案 1 :(得分:0)
您可以对多个数据库使用以下配置。
<?php
return array(
'default' => 'mysql',
'connections' => array(
# primary
'mysql' => array(
'driver' => 'mysql',
'host' => 'ip1',
'database' => 'db1',
'username' => 'user',
'password' => 'pwd'
'charset' => 'utf8',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
),
# secondary db connection
'mysql2' => array(
'driver' => 'mysql',
'host' => 'dbip2',
'database' => 'db2',
'username' => 'user',
'password' => 'pwd'
'charset' => 'utf8',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null
),
'sqlite' => array(
'driver' => 'sqlite',
'database' => __DIR__.'/../database/db.sqlite',
'prefix' => '',
),
),
);
然后您可以使用connection()方法:
$connection = ‘mysql2’;
Schema::connection($connection)->create(function(Blueprint $table) {
//
});