我有一个laravel web应用程序,每个客户都有自己的数据库。所有的数据库连接被定义为在配置/ database.php中的连接。我根据请求来自子域连接到相应的数据库。现在有我需要的每个午夜运行一些清洁工作。我创建了一个命令来实现任务和它的作品为laravel应用程序当前被配置为在.ENV文件的默认数据库。 Hoewever,什么是重复此任务的所有客户端数据库的最佳方式?
这是很容易与Laravel的Config
类来完成。我有多个MySQL服务器和多个数据库连接到从服务器获取一些信息的同样的问题。我不得不处理服务器的未定义数字。所以,我发现了一个通用的解决方案,为你工作了!
考虑一下这个结构,你的命令的Handle()函数:
public function handle()
{
$arrayOfConnections = config('database.connections'); // Array of connections
foreach($arrayOfConnections as $connection){
// Setting Config
Config::set('database.connections.dynamicConnection.host',$connection->host);
Config::set('database.connections.dynamicConnection.password',$connection->connection);
// More of your config
// Your Logic Here
// Purge the configuration (It is important!)
DB::purge('dynamicConnection');
}
}
当然,你必须从阵列,这将需要一个三元运算符或一个条件排除dynamicConnection
。但是,这是我做到了。我的是不完全一样的,我得到的值从数据库中,因为它不是好更新配置文件每隔几分钟,这不是好事,有大约数百台服务器的配置文件信息。但是,这会为你工作(这一代码的逻辑,不是魔术,将工作开箱您的具体情况没有编辑)