是否可以在与Laravel 5的动态数据库连接上进行迁移?

cyt*_*nny 11 php database-migration laravel laravel-5 laravel-migrations

我正在尝试为不同的用户动态创建数据库.(每个用户都有自己的数据库服务器,所以不要问为什么我没有为所有用户使用单个数据库)为此,我有一个存储所有连接信息的默认数据库.我需要:

  1. 创建新数据库并在新用户注册时运行所有迁移文件.
  2. 当架构中有更新时,在此默认数据库中记录的所有数据库上运行新的迁移文件.

有没有办法可以根据默认数据库中的信息动态设置迁移文件的数据库连接?


PS对于"动态设置数据库连接",我并不像在控制器或类中那样表示正常设置.我希望能够至少在目标数据库中创建迁移表并能够自我检测要运行的迁移文件.

ale*_*ino 8

是的.首先,您需要将连接详细信息添加到配置中.配置完命名连接后,只需migrate在Artisan外观上调用该命令,选择连接名称(本例中为"new")作为选项:

use Illuminate\Support\Facades\Artisan;
//...

$new_connection = 'new';

config(["database.connections.$new_connection" => [
    // fill with dynamic data:
        "driver" => "mysql",
        "host" => "",
        "port" => "",
        "database" => "",
        "username" => "",
        "password" => "",
        "charset" => "utf8",
        "collation" => "utf8_unicode_ci",
        "prefix" => "",
        "strict" => true,
        "engine" => null
    ]]);

Artisan::call('migrate', ['--database' => $new_connection]);
Run Code Online (Sandbox Code Playgroud)