2016-08-29 145 views
0

因此,我正在研究一个可以管理数据库的小型Web应用程序。即时编辑活动数据库

现在我可以使用下面的函数来检索所有数据库

DB::select('SHOW DATABASES') 

但是我现在希望能够获得表为每个数据库,并最终与这些数据库做多,但我想如果我得到这个工作,这不会是一个问题。

通常情况下,你的配置中有不同的数据库,但是因为我希望我的应用程序可以与“任何”数据库一起工作,并且确保我不必手动添加所有数据库等,因为这是我的工作类型希望我的网络应用程序为我完成。

我已经尝试过绕过它而没有成功例如。

DB:select('USE dbName; SHOW TABLES'); 
DB::select('SELECT dbName(); SHOW TABLES'); 

很明显,这没有奏效,但是有没有“适当的”解决方案呢?我认为即时编辑.env变量可能是一种选择,但我似乎无法找到一种“合法”的方法来做到这一点。

回答

0

你不需要这个。

我认为编辑在运行中.ENV变量可能已经是一个 选项,但我似乎无法找到一个“合法”的方式做,要么。

你需要的是这个

DB::purge('mysql');//IMP 

Config::set('database.connections.mysql.host', $host); 
Config::set('database.connections.mysql.database', $database); 
Config::set('database.connections.mysql.username', $username); 
Config::set('database.connections.mysql.password', $password); 

你只需要找出一种方式来获得的值$host$database$username,并$password动态。

要做到这一点的一种方法是有一个数据库,它存储所有这些值,并指向默认数据库连接(说mysqlconfig/database.php)。然后从中读取数据并相应地设置连接。

+0

我不确定是否足以重新分配配置值?如果数据库管理器/连接已经初始化,并且具有原始配置值,该怎么办?您需要在bootstrap的某个地方执行此操作。 –

+0

当然,DB管理器已使用'.env'中的默认值初始化。无论你在哪里使用该代码,配置值都只针对该对象。假设你在'MyController'类中设置配置,那么这个配置将特定于那个特定的'MyController'实例。系统的其余部分将继续使用默认连接。 – linuxartisan