目前需要实现一个功能,通过后台配置数据库服务器信息,可以直接连接远程不同的数据库
怎样才能实现通过后台表单配置数据库信息连接不同服务器的数据库获取数据信息,而不是将需要的数据库信息保存在config表中?
目前需要实现一个功能,通过后台配置数据库服务器信息,可以直接连接远程不同的数据库
怎样才能实现通过后台表单配置数据库信息连接不同服务器的数据库获取数据信息,而不是将需要的数据库信息保存在config表中?
1.建一个conf的表 字段可以很简单(id,name,value) 建议名字用大写字母和下划线 例DB_USER_1
2.在公共函数库里写一个方法 只要传入name 就可以获取值
3.后台表单提交后干两件事
一、 存入数据库
二、 生成一个文件 内容就是一个数组
结构和配置文件结构类似就选行
意思只要后台配置改变 文件重新生成
使用的时候 尽量读文件
题主是想把相关的数据库配置信息通过表单存储在一个数据库中,然后通过读取数据库中数据配置信息,然后去实现访问不同数据库的功能,而不是把所有的数据库配置信息预先配置在 config/database.php
中。
如果没有理解错的话,再来解题:
数据库配置信息存储在数据库中,只要按照 Laravel 的数据库配置要求去存储即可,这个随意题主怎么存储,在 config/database.php
中已经有了各类数据库配置的示例。
在官方文档中有说明用法 $users = DB::connection('foo')->select(...);
看官方文档即可。
ServiceProvider
ServiceProvider
boot
方法中添加如下代码。 /**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//1. get your database config from database.
//Your code.
//2. set database info to laravel database config.
$this->app['config']->set('database.connections.testing', [
'driver' => 'mysql',
'database' => ...
]);
}
没有亲自去实战,提供一种思路,请题主自行实验。
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答783 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.3k 阅读
1 回答696 阅读✓ 已解决
开发前可以肯定的方向是:
1.前端配置的数据库信息一定是写入数据库中的(反之第一想法是直接修改配置信息,明显不可行)
2.如果可以自己写一套
pdo
连接,也可以解决这个问题,是个待选方案,弊端在于放弃laravel强大的ORM
3.如果复用
ORM
,laravel 只支持 connection() 方法选择不同数据库,那么我能想到的就是在修改laravel源码,添加一个支持导入配置信息的方法。例如