我是Laravel的新手,并在此方面做了相当多的搜索。
我正在创建一个理想情况下在用户创建时创建新数据库和表的系统。
我无法动态切换数据库,然后创建表格。
DB::statement("CREATE DATABASE " . $new_db_name);
DB::connection('mysql')->setDatabaseName($new_db_name);
创建新表,我相信会将数据库更改为,我通过运行
来确认 echo DB::connection('mysql')->getDatabaseName();
但是当我运行create table命令时,表在旧数据库中创建。有什么想法吗?
先谢谢。
答案 0 :(得分:0)
当您使用DB :: connection('mysql')时,您实际上正在使用数据库配置文件中定义的实例。这是您当前与特定数据库的连接。检查here我的意思。这就是为什么它不起作用。您需要创建它,将其添加到应用程序的配置实例中,然后将其初始化。
现在,以简洁的方式,如果我是你,我会制作类似this的内容,您将在其中创建一个新数据库并将其添加到您的配置中:
DB::getConnection()->statement('CREATE DATABASE :schema', array('schema' => $schemaName));
然后使用迁移在该数据库上创建新表:
Artisan::call('migrate', array('database' => $databaseConnection, 'path' => 'app/database/tenants'));
在此之后,您应该检查用于调用新创建的数据库实例的方法:
App::make('config')->set('database.connections.'.$tenantName, $newConnection);